Incapaz de diferenciar files en dos twigs separadas en Git

Tengo FileA en branchA y FileB en branchB.

El problema es que puedo acceder solo a un file a la vez. Me gustaría poder comparar los files 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 files ?


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

Masi: Puedes usar opendiff para permitir que FileMerge tenga files de input 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

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 preferences 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 

git admite nombres de sucursales como parte de las routes del repository. Por ejemplo, si tiene los siguientes files en su repository, 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 get un artefacto de repository en salida estándar con git show :

 git show branch1:UNREADME 

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

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

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

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

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

Luego puede editar el diff si desea un subset 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í.

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

 # Our diff algorithm [diff] external = opendiff