ConceptoBloque 3 · Ramas y conflictos
Cuando dos cambios tocan la misma línea
Explicación
Git junta solo los cambios que tocan partes distintas de un archivo. Si las dos ramas cambiaron las mismas líneas, no adivina cuál vale: se detiene y te pide decidir. Eso es un conflicto.
Es como dos meseros que corrigen el mismo precio en el menú: uno pone 80 pesos y el otro 95. Los cambios en renglones distintos se juntan solos, pero en el mismo renglón alguien tiene que elegir.
La terminal avisa con CONFLICT (content): Merge conflict in archivo, y dentro del archivo quedan las dos versiones:
<<<<<<< HEAD
versión de la rama donde estás
=======
versión de la rama que llega
>>>>>>> nombre-de-la-rama
En VS Code
- Current (arriba): la rama donde estás parado, la que recibe.
- Incoming (abajo): la rama que nombraste en
git merge. - Botones: Accept Current Change, Accept Incoming Change, Accept Both Changes, Compare Changes.
- Para conflictos largos, Resolve in Merge Editor abre el editor de 3 vías con el botón Complete Merge.
Cerrar el merge
- Guarda el archivo sin marcadores.
git add archivogit commit(abre VS Code con el mensaje listo).
Complete Merge solo hace el git add: el commit sigue pendiente.
Arrepentirse
git merge --abort
Regresa todo a como estaba antes del merge.
Riesgo:
merge --abortpuede no recuperar cambios que tenías sin commit al empezar; por eso el merge se hace con la carpeta limpia. Y Accept Both Changes pega las dos versiones una tras otra sin revisar que el código tenga sentido.