Pregunta

Sé que puedo ver la diferencia entre la cabeza 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 de nuevo
    git clone url
  3. Cambiar a devel rama
    cd projectA && git -b devel origin/devel
  4. Ver las diferencias con la melodía
    meld /projectA_Master projectA

¿No hay una forma más fácil de obtener el mismo resultado en Meld? Solo necesito revisar los cambios y no principalmente para fusionar.

¿Fue útil?

Solución

También encontré este problema molesto, así que he hecho Git Meld, lo que permite una forma más cómoda de difundir comodidades arbitrarias contra el árbol de trabajo o el área de puesta en escena. Puedes encontrarlo en https://github.com/wmanley/git-meld . Es un poco como el guión de Mark, pero funciona para comparar cualquier confirmación arbitraria o el área de puesta en escena o el directorio de trabajo con cualquiera de los demás. Si una de las cosas con las que se compara es el árbol de trabajo, entonces también es lectura-escritura para que no pierda sus cambios.

Otros consejos

Corto y dulce:

git config --global diff.tool meld

Esto configura git para usar meld como la herramienta Diff. (No necesita especificar los argumentos de la línea de comando, soporte para meld está integrado en git.)

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

git difftool master..devel

ACTUALIZACIÓN: Si no desea el Diff de un archivo de un archivo, sino que desea usar la vista "Subdirectorio" de Meld con todos los cambios entre las dos ramas, tenga en cuenta las -d o --dir-diff opción para git difftool. Por ejemplo, cuando estoy en Branch XYZ y quiero ver qué es diferente entre esto y la rama ABC, ejecuto esto:

git difftool -d ABC

Comenzando con Git V1.7.11, puede usar git difftool --dir-diff Para realizar un directorio diff. Que funciona bastante bien con Meld Wihout https://github.com/wmanley/git-meld guiones.

Configurar git

git config --global diff.tool meld

Usarlo

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

Es importante decir que usar git difftool -dtodavía puede editar sus archivos de trabajo en Meld y sálvalos. Para lograr eso, debe comparar alguna rama con su árbol de trabajo actual, por ejemplo:

git difftool -d branchname

MELD mostrará que los directorios de izquierda y derecha 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). Por lo tanto, puede editarlos directamente en Meld y cuando los guarde sus cambios se guardarán en su Dir.

La opción aún más interesante es la comparación del Dir de trabajo actual con Stash. Puedes hacerlo simplemente escribiendo:

git difftool -d stash

Luego puede transferir algunos cambios desde el alijo (ventana izquierda) a su copia de trabajo actual (ventana derecha), sin usar git stash pop/apply y evitando la resolución de conflictos molesto que puede ser inducida por estos comandos.

Creo que puede aumentar significativamente el flujo de trabajo con alojamientos. Puede transferir gradualmente los cambios de alojamiento a una copia de trabajo y cometerlos uno por uno, introduciendo otros cambios si lo desea.

Aunque parece de las otras respuestas como si no hubiera una manera de hacer esto directamente en el repositorio de Git en este momento, es fácil (gracias a la respuesta a otra pregunta :)) para escribir un script que extraiga los árboles de dos compromisos a los directorios temporales y ejecute Meld en ellos, eliminando ambos directorios cuando Meld sale:

http://gist.github.com/498628

Por supuesto, perderá cualquier cambio realizado a través de MELD, pero creo que es bastante bueno para una descripción general de las diferencias.

Creo que una manera fácil de hacer esto es usar git reset --soft:

Objetivo: compare 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 puede comparar dos compromisos sin la línea de comandos:

Debe configurar en las opciones de edición 'GIT GUI', Global: "Usar la herramienta Merge: MELD".

comienzo gitk, seleccione una confirmación, haga clic con el botón derecho en otro compromiso> "Diff esto -> seleccionado". En 'Patch' haga clic derecho en un archivo>"Diff externo".

fustar Iniciará y mostrará la primera, primero se confirma en el lado derecho.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top