Por Anónimo (no verificado) , 29 Abril 2026

Lo que lograrás

Crearás un conflicto de merge deliberadamente, recorrerás la resolución y aprenderás las herramientas y patrones que hacen que los conflictos no sean intimidantes.

Paso 1: configurar un sandbox

mkdir conflict-tutorial && cd conflict-tutorial
git init
cat > recipe.txt <<'EOF'
Receta de salsa de tomate
Ingredientes:
- 1 cebolla picada
- 2 dientes de ajo
- 1 lata de tomates
EOF
git add recipe.txt
git commit -m "Receta inicial"

Paso 2: crear dos branches divergentes

git checkout -b add-basil
sed -i.bak 's/2 dientes de ajo/2 dientes de ajo\n- puñado de albahaca/' recipe.txt && rm recipe.txt.bak
git commit -am "Add basil"

git checkout -b add-oregano main
sed -i.bak 's/2 dientes de ajo/2 dientes de ajo\n- pizca de orégano/' recipe.txt && rm recipe.txt.bak
git commit -am "Add oregano"

Paso 3: disparar el conflicto

git checkout main
git merge add-basil
git merge add-oregano
CONFLICT (content): Merge conflict in recipe.txt
Automatic merge failed; fix conflicts and then commit the result.

Paso 4: leer los marcadores de conflicto

<<<<<<< HEAD
- puñado de albahaca
=======
- pizca de orégano
>>>>>>> add-oregano

Paso 5: resolver

- 2 dientes de ajo
- puñado de albahaca
- pizca de orégano
- 1 lata de tomates

Paso 6: stagear y completar el merge

git add recipe.txt
git status
git merge --continue

Herramientas que ayudan

git mergetool
git config --global merge.tool vimdiff

Abortar

git merge --abort

Patrones comunes

  • Tomar un lado entero: git checkout --ours file o git checkout --theirs file.
  • Tomar ambos: combinar manualmente.
  • Reiniciar el merge: git merge --abort.

Inspeccionar antes de resolver

git diff
git log --merge -p <file>
git show :1:<file>
git show :2:<file>
git show :3:<file>

Rerere para conflictos repetidos

git config --global rerere.enabled true