Solución: resolver conflictos de merge en Git sin romper el código
Git no puede fusionar automáticamente dos ramas porque el mismo código fue modificado en ambas. Cómo leer los marcadores de conflicto y resolverlos correctamente.
¿Por qué ocurre?
Un conflicto de merge ocurre cuando Git intenta fusionar dos ramas que modificaron las mismas líneas de código de forma diferente. Git no sabe qué versión conservar y te pide que decidas tú. Ocurre durante `git merge`, `git rebase`, `git pull` o `git cherry-pick`.
Solución paso a paso
Paso 1 — Ver qué archivos tienen conflictos:
git status
# Los archivos en conflicto aparecen como "both modified"
Paso 2 — Entender los marcadores de conflicto:
// Así se ve un archivo con conflicto:
<<<<<<< HEAD
const saludo = 'Hola mundo'; // ← tu versión (rama actual)
=======
const saludo = 'Hello world'; // ← versión del otro commit
>>>>>>> feature/i18n// Debes eliminar los marcadores y quedarte con el resultado correcto:
const saludo = 'Hola mundo'; // ← elige, combina, o reescribe
Paso 3 — Resolver el conflicto:
# Opción A: edita el archivo manualmente (elimina los marcadores)
# Opción B: acepta toda tu versión (HEAD)
git checkout --ours archivo.js# Opción C: acepta toda la versión entrante
git checkout --theirs archivo.js
# Opción D: usa VS Code (la herramienta más cómoda)
# Abre el archivo → aparecen botones: "Accept Current", "Accept Incoming", "Accept Both"
Paso 4 — Marcar como resuelto y continuar:
# Después de editar el archivo
git add archivo.js# Si estabas en un merge
git commit
# (Git propone un mensaje de merge automáticamente)
# Si estabas en un rebase
git rebase --continue
Resolver todos los conflictos de una vez con VS Code:
# Abre VS Code en el directorio del repo
code .
# Ve a la vista Source Control (Ctrl+Shift+G)
# Los archivos con conflicto tienen una "C" → ábrelos y usa los botones inline
Ver los cambios de cada lado antes de resolver:
# Qué cambió en tu rama vs la rama base
git diff HEAD...origin/main
# o
git log --oneline --graph --all
Cómo evitarlo en el futuro
Haz merges frecuentes y pequeños — cuanto más tiempo pase entre merges, más probable es que haya conflictos grandes. Establece convenciones de equipo sobre qué partes del código toca cada persona. Usa `git pull --rebase` en lugar de `git pull` para mantener el historial lineal.
¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:
Generador de Prompts