¿Qué es y por qué se produce el Merge Conflict en Git?
El error de Merge Conflict (conflicto de fusión) en Git ocurre cuando dos ramas diferentes modifican la misma línea de un archivo, o cuando un archivo fue eliminado en una rama pero modificado en la otra. Git no puede decidir automáticamente qué versión conservar, por lo que detiene el proceso de fusión y te exige que resuelvas el conflicto manualmente antes de continuar.
Causas comunes de conflictos en control de versiones
- Dos desarrolladores editando el mismo bloque de código simultáneamente.
- Intentar hacer un
git pullogit mergesin haber actualizado tu rama local previamente. - Modificar archivos de configuración compartidos en distintas ramas de trabajo.
Método 1: Solucionar el conflicto manualmente mediante la terminal
Este es el método estándar y más recomendado para entender exactamente qué cambios se están aplicando en tu proyecto.
- Ejecuta el comando de fusión que generó el conflicto, por ejemplo:
git merge feature-branch - Identifica los archivos afectados ejecutando:
git status - Abre cada archivo en tu editor de código (como VS Code). Verás marcas de conflicto que se ven así:
<<<<<<< HEAD,=======y>>>>>>> branch-name. - Edita el archivo para dejar únicamente el código correcto y elimina las líneas de marcado de Git.
- Añade los archivos solucionados al área de preparación:
git add . - Finaliza el proceso creando el commit de fusión:
git commit -m "Resuelto conflicto de merge"
Método 2: Utilizar herramientas visuales o extensiones de Git
Si prefieres no editar las líneas de marcado manualmente, puedes usar interfaces gráficas que facilitan la tarea de comparación (diff).
- Abre tu editor de código preferido, como Visual Studio Code, el cual detecta automáticamente los conflictos y ofrece opciones visuales como 'Accept Current Change' (Aceptar cambio actual), 'Accept Incoming Change' (Aceptar cambio entrante) o 'Accept Both Changes' (Aceptar ambos cambios).
- Haz clic en la opción deseada según la lógica de tu aplicación.
- Guarda los cambios en el archivo.
- Usa la terminal integrada para confirmar la resolución con
git add nombre-archivoygit commit.