ver remotas ramas modificados entre diferencias commits cambios archivos archivo git diff branch meld

git - remotas - ver diferencias entre commits



Ver las diferencias de ramas con meld? (8)

Sé que puedo ver la diferencia entre HEAD y el estado actual con meld . . Pero, ¿cómo puedo ver las diferencias entre las ramas, por ejemplo, master y devel con meld?

Por el momento, hago los siguientes pasos:

  1. Cambiar el nombre de la carpeta de la copia de trabajo
    Por ejemplo mv /projectA /projectA_master )
  2. Clonar el proyecto nuevamente
    git clone url
  3. Cambiar a la rama de devel
    cd projectA && git -b devel origin/devel
  4. Ver las diferencias con meld
    meld /projectA_Master projectA

¿No hay una manera más fácil de obtener el mismo resultado en meld? Solo lo necesito para revisar los cambios y no principalmente para la fusión.


Aunque por las otras respuestas parece que no hay forma de hacerlo directamente en el repositorio de git en este momento, es fácil (gracias a la respuesta a otra pregunta :)) escribir un script que extraiga los árboles de dos confirmaciones a directorios temporales y ejecute meld en ellos, eliminando ambos directorios cuando meld exits:

http://gist.github.com/498628

Por supuesto, perderá cualquier cambio realizado a través de Meld, pero es bastante bueno para una visión general rápida de las diferencias, creo.


Comenzando con git v1.7.11, puede usar git difftool --dir-diff para realizar una diferencia de directorio. Que funciona bastante bien con Meld sin https://github.com/wmanley/git-meld scripts.

Configurar git

git config --global diff.tool meld

Úselo

git difftool -d topic // -d is --dir-diff git difftool -d master..topic

Para macOS

brew cask install meld git config --global difftool.meld.cmd ''open -W -a Meld --args /"$LOCAL/" /"$PWD/$REMOTE/"'' git config --global difftool.meld.trustExitCode true


Corto y dulce:

git config --global diff.tool meld

Esto configura a Git para usar meld como la herramienta diff. (No es necesario especificar los argumentos de la línea de comandos, el soporte para meld está integrado en Git).

Entonces, si quieres una diferencia gráfica en lugar de una textual, simplemente git difftool lugar de git diff (ambos toman los mismos argumentos). En tu caso:

git difftool master..devel

Actualización: si no quiere el diff de un archivo por vez, sino que quiere usar la vista de "subdirectorio" de --dir-diff con todos los cambios entre las dos ramas, tenga en cuenta la opción -d o --dir-diff para git difftool . Por ejemplo, cuando estoy en la rama XYZ y quiero ver qué hay de diferente entre esta y la rama ABC, ejecuto esto:

git difftool -d ABC


Creo que una forma fácil de hacerlo es usar git reset --soft :

Objetivo: comparar las diferencias entre branch_a y branch_b con meld

git checkout branch_a git checkout -b do_diff git reset --soft branch_b meld .


En git V1.7.9 puedes comparar dos commits sin la línea de comando:

Debe configurar en las opciones de edición ''git gui'', global: "Usar herramienta de combinación: fusionar".

Inicie gitk , seleccione una confirmación, haga clic con el botón secundario en otra confirmación> " diff this -> selected ". Debajo de ''parche'', haga clic derecho en un archivo> " diff externo ".

meld se iniciará y mostrará el still selected, primer commit en el lado derecho.


Es importante decir que al usar git difftool -d aún puede editar sus archivos de trabajo en Meld y guardarlos . Para lograr eso, necesita comparar alguna rama con su árbol de trabajo actual, por ejemplo:

git difftool -d branchname

Meld mostrará que los directorios izquierdo y derecho se encuentran en / tmp. Sin embargo, los archivos en el directorio correcto son en realidad enlaces simbólicos a sus archivos en el directorio de trabajo actual (no se aplica a Windows). Entonces puede editarlos directamente en Meld y cuando los guarde, sus cambios se guardarán en su directorio de trabajo.

Sin embargo, la opción más interesante es la comparación del directorio de trabajo actual con el escondite. Puedes hacerlo simplemente escribiendo:

git difftool -d stash

A continuación, puede transferir algunos cambios del alijo (ventana izquierda) a su copia de trabajo actual (ventana derecha), sin usar git stash pop/apply y evitar la molesta resolución del conflicto que pueden inducir estos comandos.

Creo que puede aumentar significativamente el flujo de trabajo con stashes. Puede transferir gradualmente los cambios del escondite a la copia de trabajo y confirmarlos uno por uno, introduciendo algunos otros cambios si lo desea.


Si tiene un directorio de trabajo limpio e índice limpio (o no le importa) entonces esto es lo que quiere:

git diff master..devel | patch -p1 && meld . && git reset --hard


También encontré este problema molesto, así que hice git meld, que permite una forma más cómoda de diferir los commit arbitrarios contra el árbol de trabajo o el área de ensayo. Puede encontrarlo en https://github.com/wmanley/git-meld . Es un poco como el guión de Mark, pero funciona para comparar cualquier compromiso arbitrario o el área de ensayo o el directorio de trabajo contra cualquiera de los otros. Si una de las cosas con las que compara es el árbol de trabajo, entonces también es de lectura y escritura para que no pierda sus cambios.