Cómo resolver conflictos de fusión (merge conflicts) en Git sin perder código
El Diagnóstico Rápido
Un conflicto de fusión (merge conflict) en Git ocurre cuando dos personas modifican las mismas líneas de un archivo en ramas diferentes, o cuando una de ellas elimina un archivo que la otra está intentando editar. Al no poder decidir automáticamente qué cambios priorizar, Git detiene el proceso y marca los archivos en conflicto.
La Solución Paso a Paso
Paso 1: Localizar los archivos marcados en conflicto
Al realizar un git merge o git pull fallido, Git te mostrará una lista de archivos marcados. Puedes revisar el estado actual de tus cambios ejecutando:
git status
(Busca los archivos bajo la etiqueta "Both modified" o "Ambos modificados").
Paso 2: Interpretar los marcadores de conflicto de Git
Abre el archivo en conflicto con tu editor de código. Encontrarás marcas visuales introducidas por Git que separan los cambios de tus ramas:
<<<<<<< HEAD
// Este es tu código local (rama en la que estás posicionado)
const API_URL = "https://local-api.test";
=======
// Este es el código remoto o de la rama que intentas fusionar
const API_URL = "https://production-api.com";
>>>>>>> main
-
1
Paso 1
Decide qué línea conservar o edita la zona para fusionar ambas ideas. -
2
Paso 2
Elimina todas las marcas de conflicto (<<<<<<<,=======,>>>>>>>).
Paso 3: Confirmar la resolución y reanudar la fusión
Una vez corregidos los archivos, agrégalos y culmina la transacción de Git por consola:
# Agregar los archivos limpios editados
git add nombre-del-archivo.js
# Finalizar la fusión escribiendo un mensaje descriptivo
git commit -m "Resolve merge conflict in api configuration"
(Nota: Si el conflicto es demasiado complejo y deseas regresar al estado original de tus ramas antes de intentar resolverlo, aborta la operación de forma segura escribiendo git merge --abort o git rebase --abort).
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Adquiere la costumbre de subir tus cambios y realizar integraciones a tu rama principal frecuentemente (
git pull origin main). Mantener ramas locales aisladas durante semanas incrementa drásticamente la probabilidad de que las mismas secciones de código sean modificadas por otros colaboradores de tu equipo, complicando la resolución de dependencias lógicas y la integridad de tu código fuente al momento de fusionar.