Crea el conflicto
Ejecuta este ejercicio Bash en un directorio nuevo y vacío. Los nombres de las ramas y del archivo pertenecen a este ejemplo.
git init -b main
git config user.name "DevSheet Demo"
git config user.email "demo@example.invalid"
printf "colour=blue\n" > settings.txt
git add settings.txt
git commit -m "Base colour"
git switch -c feature
printf "colour=green\n" > settings.txt
git commit -am "Feature colour"
git switch main
printf "colour=red\n" > settings.txt
git commit -am "Main colour"
git merge featureEl último comando debe detenerse con un conflicto en settings.txt. En este ejercicio se espera un código de salida distinto de cero.
Lee las dos versiones
git status --short
git diff -- settings.txtBusca UU settings.txt. En el archivo, <<<<<<< HEAD introduce el texto de la rama actual, ======= separa las versiones y >>>>>>> feature cierra el texto entrante. Estas etiquetas describen un merge normal; un rebase tiene otro contexto.
Escribe y revisa el contenido final
En el ejercicio elige verde. Reemplaza todo el archivo en conflicto, añade únicamente ese archivo al staging y revisa el diff.
printf "colour=green\n" > settings.txt
git add settings.txt
git diff --cached
git merge --continue
git status --shortGuarda el mensaje cuando se abra el editor. Resultado esperado: estado limpio y un commit de merge. En un proyecto real, combina los cambios según el comportamiento deseado y ejecuta las comprobaciones pertinentes antes de terminar.
Cancela o revisa un merge bloqueado
Mientras el conflicto siga pendiente, git merge --abort intenta volver al estado anterior. Haz commit o guarda en stash el trabajo ajeno a la operación antes de empezar: abort puede no reconstruir cambios previos.
Añadir un archivo al staging comunica que resolviste el conflicto, aunque queden marcadores. Lee el diff. Archivos binarios, conflictos de eliminación/modificación y renombrados requieren decisiones propias.