Was rerere tut
Rerere — "reuse recorded resolution" — beobachtet das Losen eines Merge-Konflikts, zeichnet die Auflosung auf und spielt sie das nachste Mal ab, wenn derselbe Konflikt erscheint. Unschatzbar fur lange laufende Branches, die wiederholt rebasen oder mergen.
Aktivieren
git config --global rerere.enabled true
git config --global rerere.autoupdate true
Wie es funktioniert
Beim Konflikt speichert Git einen Hash des Konfliktkontexts unter .git/rr-cache/.
Status inspizieren
git rerere status
git rerere diff
git rerere remaining
Schlechte Auflosung vergessen
git rerere forget path/to/file
Anwendungsfall: Rebase-Sturme
Sie pflegen einen langen Feature-Branch und rebasen wochentlich gegen main. Dieselben Konflikte in CHANGELOG.md erscheinen jedes Mal.
Anwendungsfall: Integrations-Branch
Einige Teams pflegen einen "integration"-Branch, der nachts alle Feature-Branches re-merged.
Haufige Fehler
rerere blind vertrauen: immer mit git diff --staged inspizieren, bevor committet wird.
rerere aus Historie trainieren
git rev-list --merges main | while read merge; do
git checkout "$merge^"
git merge "$merge^2" || git rerere
git reset --hard
done