Hace ya un buen tiempo un buen amigo de la Argentina (Fer Perez) me pasó el tip de instalarme el p4merge para resolver conflictos al hacer merge con los branches de los repositorios de protocolo git.
La herramienta es muy fácil de usar, de configurar y sobre todo es muy visual, esta es muy similar a la herramienta que integran los IDE de jetbrains.
Primero bajamos e instalamos el programa p4merge de este link
Ahora vamos a configurarlo como herramienta por default de mergetool para git, para esto agregamos lo siguiente en el archivo [HOME]/.gitconfig
[merge] keepBackup = false; tool = p4merge [mergetool] prompt = false [mergetool "p4merge"] # windows and linux cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED" #for mac #cmd = /Applications/p4merge.app/Contents/MacOS/p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED" keepTemporaries = false trustExitCode = false keepBackup = false [diff] tool = p4merge [difftool] prompt = false [difftool "p4merge"] # linux and windows cmd = p4merge "$LOCAL" "$REMOTE" # for mac # cmd = /Applications/p4merge.app/Contents/MacOS/p4merge "$LOCAL" "$REMOTE" keepTemporaries = false trustExitCode = false keepBackup = false
Pues bien parece que todo ahora esta correcto, vamos a probarla
Para esto cuando hagas merge de un branch que cause conflictos en tu branch local, te avisara que tienes unos archivos con conflictos, algo como esto
$ git merge origin/develop Auto-merging yarn.lock Auto-merging styles/example.css CONFLICT (content): Merge conflict in styles/example.css Auto-merging package.json Automatic merge failed; fix conflicts and then commit the result.
Después solo debes correr desde la terminal el comando
git mergetool
Esto te lanzara la herramienta p4merge para cada archivo con conflicto.
en donde tu podrás seleccionar si dejas tus cambios, los del branch antes del conflicto o los de branch remoto (el que te causa el conflicto), también puedes hacer combinaciones, es decir lo del branch remoto y parte de tu código local.
Algo importante a mencionar es que p4merge te hace siempre un respaldo del archivo en el que estas resolviendo el conflicto, esto es por si por algún motivo te equivocas, tengas el archivo original con el conflicto, si después de realizar la resolución de conflictos no lo necesitas, elimínalo con confianza, estos archivos no se agregan al add que genera el merge y tienen el nombre original del file, pero terminan en .origin, en nuestro ejemplo el archivo esta en la carpeta /styles y se llama:
example.css.origin
Bueno es todo, espero te sirva esta herramienta, si tienes alguna duda déjame un comentario.
Hasta pronto coder.