A veces tengo que hacer fusiones de git en la consola. Hasta ahora, para resolver conflictos, estaba usando FileMerge de Xcode 3 (puedes abrirlo en la consola usando el comando 'opendiff'). Si aparecen conflictos, uso 'git mergetool' que invoca automáticamente opendiff para cada uno de los archivos en conflicto.
Sin embargo, Xcode 4 presenta un componente de herramienta de combinación mucho mejor para resolver conflictos. Creo que este componente es parte del ejecutable de Xcode 4, en lugar de ser independiente. Le permite obtener una vista previa del archivo fusionado y editar directamente el código fusionado caso por caso, lo que hace que la fusión de conflictos complejos sea increíblemente rápida y satisfactoria.
¿Hay alguna forma de usar la herramienta de combinación Xcode 4 al invocar 'git mergetool' desde la Terminal?
No puedo encontrar un ejecutable para esta herramienta dentro del paquete Xcode 4. Cualquier hack que logre esto será bienvenido.
opendiff toma dos argumentos de nombre de archivo y un parámetro --ancestor con un tercer nombre de archivo, para producir una diferencia de tres vías, y un parámetro --merge para decir el archivo de salida que se usará para la resolución del conflicto.
Entonces ve:
[mergetool "opendiff"]
cmd = "opendiff \"$LOCAL\" \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
tool = opendiff
Eso debería hacer que git use opendiff como su herramienta de combinación, cuando hay conflictos de combinación.
Dicho esto, prefiero MUCHO DiffMerge de SourceGear , que es una herramienta gratuita de diferenciación y combinación de tres vías que hace una resolución de conflictos mucho mejor, orientada a palabras. Y en la documentación de DiffMerge hay qué decirle a git para que sea la herramienta de diferenciación y fusión predeterminada.
Puede editar en el editor de texto (muy básico) dentro de FileMerge abriendo el panel del editor, que está cerrado de forma predeterminada. Para abrir el editor en FileMerge, arrastre el punto debajo de la columna central de diferencias hacia arriba para abrir el panel del editor.
Esto termino funcionando para mi
[merge]
tool = opendiff
[mergetool]
keepBackup = false
[mergetool "opendiff"]
cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""
Ricardo Sánchez-Sáez