Da Anonimo (non verificato) , 29 Aprile 2026

Cosa otterrai

Creerai deliberatamente un conflitto di merge, camminerai attraverso la risoluzione e imparerai gli strumenti e i pattern che rendono i conflitti non-spaventosi.

Passo 1: configurare un sandbox

mkdir conflict-tutorial && cd conflict-tutorial
git init
cat > recipe.txt <<'EOF'
Tomato Sauce Recipe
Ingredients:
- 1 onion, chopped
- 2 cloves garlic
- 1 can tomatoes
EOF
git add recipe.txt
git commit -m "Initial recipe"

Passo 2: creare due branch divergenti

git checkout -b add-basil
sed -i.bak 's/2 cloves garlic/2 cloves garlic\n- handful of basil/' recipe.txt && rm recipe.txt.bak
git commit -am "Add basil"

git checkout -b add-oregano main
sed -i.bak 's/2 cloves garlic/2 cloves garlic\n- pinch of oregano/' recipe.txt && rm recipe.txt.bak
git commit -am "Add oregano"

Passo 3: triggerare il conflitto

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.

Passo 4: leggere i marker di conflitto

<<<<<<< HEAD
- handful of basil
=======
- pinch of oregano
>>>>>>> add-oregano

Passo 5: risolvere

- 2 cloves garlic
- handful of basil
- pinch of oregano
- 1 can tomatoes

Passo 6: stage e completare il merge

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

Strumenti che aiutano

git mergetool
git config --global merge.tool vimdiff

Abortire

git merge --abort

Pattern comuni

  • Prendere un lato all'ingrosso.
  • Prendere entrambi.
  • Riavviare il merge.

Ispezionare prima di risolvere

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

Rerere per conflitti ripetuti

git config --global rerere.enabled true