Sé que puedo ver la diferencia entre HEAD y el estado actual con meld .
. Pero, ¿cómo puedo ver las diferencias entre ramas, por ejemplo master
y devel
con meld?
En este momento hago los siguientes pasos:
- Cambiar el nombre de la carpeta de la copia de trabajo,
por ejemplomv /projectA /projectA_master
) - Clonar el proyecto nuevamente
git clone url
- Cambiar a
devel
rama
cd projectA && git -b devel origin/devel
- Ver diferencias con meld
meld /projectA_Master projectA
¿No hay una manera más fácil de obtener el mismo resultado en fusión? Solo lo necesito para revisar los cambios y no principalmente para fusionar.
Respuestas:
También encontré este problema molesto, así que hice git meld que permite una forma más cómoda de diferenciar las confirmaciones arbitrarias contra el árbol de trabajo o el área de preparación. Puede encontrarlo en https://github.com/wmanley/git-meld . Es un poco como el script de Mark, pero funciona para comparar cualquier confirmación arbitraria o el área de preparación o el directorio de trabajo con cualquiera de los otros. Si una de las cosas con las que está comparando es el árbol de trabajo, entonces eso es leer y escribir también para que no pierda sus cambios.
fuente
Corto y dulce:
Esto configura Git para usarlo
meld
como herramienta diff. (No necesita especificar los argumentos de la línea de comandos, el soporte parameld
Git está integrado).Luego, si desea una diferencia gráfica en lugar de una textual, simplemente invoque en
git difftool
lugar degit diff
(ambas toman los mismos argumentos). En tu caso:Actualización: si no desea la diferencia de un archivo a la vez, pero en su lugar desea utilizar la vista "subdirectorio" de meld con todos los cambios entre las dos ramas, tenga en cuenta la opción
-d
u . Por ejemplo, cuando estoy en la rama XYZ y quiero ver qué es diferente entre esto y la rama ABC, ejecuto esto:--dir-diff
git difftool
fuente
Comenzando con git v1.7.11, puede usar
git difftool --dir-diff
para realizar un directorio diff. Que funciona bastante bien con fusión sin https://github.com/wmanley/git-meld scripts.Configurar git
Úsalo
Para macOS
fuente
Ctrl+s
- la parte correcta, su archivo se modifica.Es importante decir que el uso
git difftool -d
que usted todavía puede editar sus archivos de trabajo en Meld y los libró . Para lograrlo, debe comparar alguna rama con su árbol de trabajo actual, por ejemplo:Meld mostrará que los directorios izquierdo y derecho están ubicados 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). Para que pueda 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 alijo. Puede hacerlo simplemente escribiendo:
Luego, puede transferir algunos cambios de alijo (ventana izquierda) a su copia de trabajo actual (ventana derecha), sin usar
git stash pop/apply
y evitar la molesta resolución de conflictos que pueden inducir estos comandos.Creo que puede aumentar significativamente el flujo de trabajo con escondites. Puede transferir gradualmente los cambios de un alijo a una copia de trabajo y confirmarlos uno por uno, introduciendo algunos otros cambios si lo desea.
fuente
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 :)) escribir un script que extraiga los árboles de dos commits a directorios temporales y ejecuta meld en ellos, eliminando ambos directorios cuando sale meld:
http://gist.github.com/498628
Por supuesto, perderá cualquier cambio realizado a través de meld, pero creo que es bastante bueno para una visión general rápida de las diferencias.
fuente
Creo que una manera fácil de hacer esto es usar
git reset --soft
:Objetivo: comparar las diferencias entre branch_a y branch_b con meld
fuente
En git V1.7.9 puede comparar dos confirmaciones sin la línea de comandos:
Debe configurar en 'git gui' las opciones de edición, global: "Usar herramienta de fusión: fusión".
Inicie gitk , seleccione una confirmación, haga clic derecho en otra confirmación> " diff this -> selected ". En "parche", haga clic con el botón derecho en un archivo> " diff externo ".
meld comenzará y mostrará el todavía seleccionado, primero commit en el lado derecho.
fuente
Para Meld en macOS, agregue esto a
~/.gitconfig
lo recomendado por el mantenedor de la aplicación macOS, yousseb :Puede omitir las
merge
configuraciones si lo desea.La respuesta de @ GutenYe no funcionó para mí debido al escape automático y / o algo con eso
zsh
.fuente