Da Anonimo (non verificato) , 29 Aprile 2026

Definire "merge cattivo"

Un merge cattivo puo significare: hai mergato il branch sbagliato, hai risolto male i conflitti, il merge ha introdotto una regressione.

Caso 1: non ancora pushato

git reset --hard ORIG_HEAD

Caso 2: pushato, altri non hanno fatto pull

git reset --hard ORIG_HEAD
git push --force-with-lease

Caso 3: pushato, altri hanno fatto pull

git revert -m 1 <merge-sha>

Re-mergare dopo un revert

git revert <revert-sha>
git checkout feature/login
git rebase main
git checkout main
git merge feature/login

Caso 4: cattiva risoluzione conflitti

git checkout main
git commit -m "Fix conflict resolution from merge of feature/login"

Caso 5: mergato il branch sbagliato

git reset --hard ORIG_HEAD
git merge correct-branch

Ispezionare un merge

git log -1 --format=fuller --stat HEAD
git show -m HEAD
git diff HEAD^1 HEAD
git diff HEAD^2 HEAD

Evitare merge cattivi

  • Usare sempre --no-ff sui branch di lunga durata.
  • Configurare CI per girare sul risultato del merge.
  • Usare git mergetool.
  • Eseguire test immediatamente dopo ogni merge.

Il toolkit di recupero

  • ORIG_HEAD.
  • git reflog.
  • git revert -m.
  • git push --force-with-lease.