¿Qué es un Merge Conflict en Git y por qué ocurre?
El error de conflicto de fusión o merge conflict en Git ocurre cuando dos ramas diferentes modifican la misma línea de un archivo, o cuando un archivo es editado en una rama y eliminado en otra. Git no puede decidir automáticamente qué versión prevalece, por lo que detiene el proceso de fusión y te exige una resolución manual.
Causas principales de los conflictos en Git
Existen diversos escenarios comunes que provocan este comportamiento en entornos de desarrollo colaborativo:
- Trabajar en el mismo archivo y línea simultáneamente con otro desarrollador.
- Hacer un
git pullsobre cambios locales no confirmados o que colisionan con el repositorio remoto. - Intentar fusionar (
git mergeogit rebase) ramas con historiales divergentes y modificaciones superpuestas.
Método 1: Resolver conflictos manualmente mediante la interfaz de código
Este es el enfoque más común y recomendado para desarrolladores que utilizan editores modernos como VS Code.
- Ejecuta el comando de fusión que provoca el conflicto, por ejemplo:
git merge rama-secundaria. - Identifica los archivos afectados ejecutando:
git status. - Abre los archivos afectados en tu editor de código. Verás marcas de conflicto como
<<<<<<< HEAD,=======y>>>>>>> rama-secundaria. - Modifica el código para dejar únicamente la versión deseada, eliminando las líneas de marcado de Git.
- Guarda los cambios y añade el archivo al área de preparación con:
git add nombre-del-archivo.js. - Finaliza el proceso creando un commit de fusión:
git commit -m "Resuelto conflicto de merge".
Método 2: Utilizar herramientas visuales o GUI para mitigar conflictos
Si prefieres no editar las marcas de texto manualmente, puedes apoyarte en herramientas gráficas integradas.
- Abre tu entorno de desarrollo integrado (IDE) como Visual Studio Code, WebStorm o PhpStorm.
- Localiza la sección de control de versiones donde Git muestra los archivos en conflicto.
- Selecciona la opción
Accept Current Change(Aceptar cambio actual),Accept Incoming Change(Aceptar cambio entrante) oAccept Both Changes(Aceptar ambos cambios) según convenga. - El IDE actualizará automáticamente el archivo eliminando el código sobrante.
- Confirma los cambios en la pestaña de Git del editor y sincroniza con tu repositorio remoto.