Saltar al contenido principal
Git

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.

Error: CONFLICT (content): Merge conflict in archivo.js

¿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.

GitmergeconflictoErrorrebase

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.