Définir "mauvais merge"
Un mauvais merge peut signifier : vous avez mergé la mauvaise branche, vous avez mal résolu les conflits, le merge a introduit une régression, ou vous avez mergé avant que la review ne soit complète.
Cas 1 : pas encore poussé
git reset --hard ORIG_HEAD
Cas 2 : poussé, les autres n'ont pas pull
git reset --hard ORIG_HEAD
git push --force-with-lease
Cas 3 : poussé, les autres ont pull
git revert -m 1 <merge-sha>
Re-merger après un revert
git revert <revert-sha>
git checkout feature/login
git rebase main
git checkout main
git merge feature/login
Cas 4 : mauvaise résolution de conflit
git checkout main
git commit -m "Fix conflict resolution from merge of feature/login"
Cas 5 : mergé la mauvaise branche
git reset --hard ORIG_HEAD
git merge correct-branch
Inspecter un merge
git log -1 --format=fuller --stat HEAD
git show -m HEAD
git diff HEAD^1 HEAD
git diff HEAD^2 HEAD
Éviter les mauvais merges
- Utilisez toujours
--no-ffsur les branches de longue durée. - Configurez CI pour tourner sur le résultat du merge.
- Utilisez
git mergetoolpour les conflits délicats. - Lancez les tests immédiatement après chaque merge.
Le kit de récupération
ORIG_HEAD.git reflog.git revert -m.git push --force-with-lease.