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.