¿Qué es un Merge Conflict en Git y por qué ocurre?
El control de versiones es fundamental en el desarrollo de software, pero cuando múltiples desarrolladores modifican la misma línea de código o archivos idénticos en ramas distintas, Git no puede fusionar los cambios automáticamente. Esto genera un merge conflict o conflicto de fusión, deteniendo temporalmente el proceso de integración hasta que intervengas de forma manual.
Causas principales de un conflicto en Git
- Dos o más personas modifican la misma línea en un archivo de código fuente.
- Se intenta fusionar una rama que elimina un archivo que otra rama ha modificado simultáneamente.
- Diferencias en los saltos de línea (CRLF vs LF) entre sistemas operativos al colaborar en equipo.
- Falta de sincronización frecuente con el repositorio remoto (no hacer
git pullregularmente).
Método 1: Identificar y resolver conflictos manualmente en el código
- Abre tu terminal y ejecuta el comando de fusión habitual, por ejemplo:
git merge rama-secundaria. - Git te indicará en qué archivos existe el conflicto. Abre dichos archivos en tu editor de código (como VS Code).
- Busca los marcadores de conflicto que inserta Git:
<<<<<<< HEAD,=======y>>>>>>> nombre-de-rama. - Edita el archivo manualmente para conservar únicamente el código correcto y elimina las líneas de marcadores.
- Guarda los cambios y añade el archivo al área de preparación ejecutando:
git add nombre-del-archivo.js. - Finaliza el proceso completando el commit:
git commit -m "Resuelto conflicto de fusión".
Método 2: Utilizar herramientas visuales para resolver conflictos
- Si prefieres no editar los archivos de texto plano manualmente, puedes usar una interfaz gráfica integrada como GitKraken, SourceTree o el propio panel de control de Visual Studio Code.
- En VS Code, verás opciones directas sobre el bloque de conflicto que dicen 'Accept Current Change', 'Accept Incoming Change' o 'Accept Both Changes'.
- Haz clic en la opción que mejor se adapte a los requerimientos de tu proyecto de desarrollo.
- Una vez que la herramienta limpie los marcadores automáticamente, guarda el archivo y confirma los cambios desde la misma interfaz gráfica o la terminal para restablecer el flujo normal de trabajo.