ver ramas rama partir otra log crear comparar cambios cambiar archivo git unix merge diff

ramas - git log



Incapaz de diferenciar archivos en dos ramas separadas en Git (4)

Tengo FileA en branchA y FileB en branchB.

El problema es que puedo acceder solo a un archivo a la vez. Me gustaría poder comparar los archivos por FileMerge o meld, ya que son los únicos diffTools que he encontrado para Mac.

¿Cómo se puede diferenciar por fusión / FileMerge los dos archivos ?

[Solucionado]: primer problema desarrollado: FileMerge no permite la entrada estándar

Masi: Puedes usar opendiff para permitir que FileMerge tenga archivos de entrada estándar. Entonces, el siguiente problema es encontrar cómo hacer que la herramienta de diferencias de git use opendiff.

Segundo problema desarrollado: hacer que la herramienta diff de Git use opendiff en Mac


Desde los documentos , necesitas algo similar a lo siguiente en tu archivo .git / config:

# Our diff algorithm [diff] external = opendiff


Puede usar " git mergetool " para fusionar, y en git moderno (es decir, la versión 1.6.3 y posterior) " git difftool " para comparar usando herramientas gráficas. Por supuesto, tendrías que configurarlos primero, pero hacen una autodetección (con algunas preferencias codificadas, por supuesto), y si recuerdo correctamente, la compatibilidad con opendiff está incorporada.

Y luego, por supuesto, usted podría usar su herramienta gráfica (opendiff / FileMerge) ya que usaría el "git diff" común, por ejemplo

prompt> git difftool somebranch:UNREADME otherbranch:README


Si actualmente está realizando un checkout a branchA, por ejemplo, puede usar el comando:

git diff branchB path/to/common/file/between/branches.txt

Luego puede editar el diff si desea un subconjunto de los cambios, o dejarlo como está, y git apply el diff como un parche. En cuanto a una herramienta de GUI que hace esto, con suerte alguien más tendrá una sugerencia allí.


git admite nombres de sucursales como parte de las rutas del repositorio. Por ejemplo, si tiene los siguientes archivos en su repositorio, README solo en el master , y UNREADME solo en la branch :

master:README branch:UNREADME

Puedes diferenciarlos a través de git con:

git diff branch:UNREADME master:README

Puede obtener un artefacto de repositorio en salida estándar con git show :

git show branch1:UNREADME

Entonces, si su utilidad de diferencia externa puede tomar 2 archivos en el prompt bash, puede diferenciarlos con algo como:

diff-command <(git show branch1:UNREADME) <(git show master:README)

Donde la sintaxis de <(...) bash toma la salida del comando incluido, lo ejecuta en una tubería y coloca la ruta de archivo de la tubería en la línea de comando.