"Schlechter Merge" definieren
Ein schlechter Merge kann bedeuten: Sie haben den falschen Branch gemerged, Sie haben Konflikte falsch gelost, der Merge fuhrte eine Regression ein.
Fall 1: noch nicht gepusht
git reset --hard ORIG_HEAD
Fall 2: gepusht, andere haben nicht gepullt
git reset --hard ORIG_HEAD
git push --force-with-lease
Fall 3: gepusht, andere haben gepullt
git revert -m 1 <merge-sha>
Nach einem Revert erneut mergen
git revert <revert-sha>
git checkout feature/login
git rebase main
git checkout main
git merge feature/login
Fall 4: schlechte Konfliktauflosung
git checkout main
git commit -m "Fix conflict resolution from merge of feature/login"
Fall 5: falschen Branch gemerged
git reset --hard ORIG_HEAD
git merge correct-branch
Einen Merge inspizieren
git log -1 --format=fuller --stat HEAD
git show -m HEAD
git diff HEAD^1 HEAD
git diff HEAD^2 HEAD
Schlechte Merges vermeiden
- Immer
--no-ffauf lang lebenden Branches. - CI fur das Merge-Ergebnis konfigurieren.
git mergetoolverwenden.- Tests sofort nach jedem Merge ausfuhren.
Das Recovery-Toolkit
ORIG_HEAD.git reflog.git revert -m.git push --force-with-lease.