Resolución Práctica de Conflictos de Fusión
Aprende por qué ocurren los temidos conflictos de fusión en Git, cómo leer los marcadores de conflicto (<<<<<<<, =======, >>>>>>>) y el procedimiento paso a paso para resolverlos con serenidad profesional.
¿Por qué ocurren los Conflictos en Git?
Un conflicto de fusión (merge conflict) ocurre cuando dos ramas modificaron las mismas líneas exactas de un mismo archivo con contenidos diferentes, o cuando una rama modificó un archivo y la otra lo eliminó.
En este escenario, Git es lo suficientemente inteligente como para saber que no puede adivinar cuál de las dos versiones es la correcta. Por seguridad, detiene el proceso y te entrega el control a ti (el programador) para que decidas qué conservar.
Anatomía de un Conflicto en el Código
Cuando ocurre un conflicto, Git inyecta marcadores de conflicto visibles directamente dentro del archivo afectado:
<<<<<<< HEAD (Rama actual en la que estás parado, ej: main)
$precioTotal = $precio * 1.19; // Versión con IVA incluido
=======
$precioTotal = $precio - $descuento; // Versión con cupón aplicado
>>>>>>> feature/descuentos (Rama que estás intentando fusionar)
<<<<<<< HEAD: Marca el inicio del bloque que tenías en la rama donde ejecutaste el merge.=======: La línea divisoria central que separa ambas versiones en disputa.>>>>>>> nombre-rama: Marca el final del bloque proveniente de la rama entrante.
El Protocolo de Resolución en 4 Pasos
-
Identificar los archivos en conflicto: Ejecuta
git status. Los archivos conflictivos aparecerán listados bajo «Unmerged paths: both modified». -
Editar y limpiar el código: Abre el archivo en tu editor (VS Code tiene botones convenientes como «Accept Current Change», «Accept Incoming Change» o «Accept Both»). Borra manualmente las líneas de marcadores (
<<<<<<<,=======,>>>>>>>) y deja solo el código final deseado. -
Marcar el conflicto como resuelto: Añade el archivo reparado al Staging Area con
git add <archivo>. -
Finalizar la fusión: Ejecuta
git commit(sin-mpara aceptar el mensaje predeterminado de merge de Git, o con tu propio mensaje). ¡Fusión completada con éxito!
git merge --abort
⚡ Comandos para Diagnosticar y Resolver un Conflicto
Secuencia de comandos en la terminal durante un conflicto de fusión:
# 1. Intentar fusionar y recibir el aviso de conflicto:
git merge feature/nueva-pasarela
# Auto-merging app/controllers/CheckoutController.php
# CONFLICT (content): Merge conflict in app/controllers/CheckoutController.php
# Automatic merge failed; fix conflicts and then commit the result.
# 2. Ver qué archivos están en conflicto:
git status
# 3. [Abrir el archivo en VS Code o tu editor, corregir el código y guardar]
# 4. Decirle a Git que el conflicto en ese archivo ya está resuelto:
git add app/controllers/CheckoutController.php
# 5. Confirmar la finalización del merge:
git commit -m "merge: resolver conflicto de pasarela de pago en checkout"
# 6. Si en lugar de resolver querías arrepentirte y volver atrás:
# git merge --abort
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de Git & GitHub Profesional y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.