Da Anonimo (non verificato) , 29 Aprile 2026

Cosa fa rerere

Rerere — "reuse recorded resolution" — osserva la risoluzione di un conflitto di merge, la registra e la riproduce la volta successiva che lo stesso conflitto compare. E prezioso su branch di lunga durata che fanno rebase o merge ripetuti contro un main attivo.

Abilitare

git config --global rerere.enabled true
git config --global rerere.autoupdate true

Come funziona

Quando si verifica un conflitto, Git memorizza un hash del contesto del conflitto in .git/rr-cache/. Dopo la risoluzione e il commit, la risoluzione viene associata a quell'hash.

Ispezionare lo stato

git rerere status
git rerere diff
git rerere remaining

Dimenticare una risoluzione errata

git rerere forget path/to/file

Caso d'uso: tempeste di rebase

Si mantiene un branch di feature lungo e si fa rebase contro main settimanalmente. Gli stessi conflitti in CHANGELOG.md appaiono ogni volta. Senza rerere si risolvono di nuovo; con rerere, la prima risoluzione manuale viene riprodotta per il resto del rebase.

Caso d'uso: branch di integrazione

Alcuni team mantengono un branch "integration" che fa re-merge di tutti i branch di feature di notte per rilevare conflitti precocemente.

Errori comuni

Fidarsi ciecamente di rerere: ispezionare sempre con git diff --staged prima di committare, specialmente con autoupdate attivo.

Addestrare rerere dalla storia

git rev-list --merges main | while read merge; do
  git checkout "$merge^"
  git merge "$merge^2" || git rerere
  git reset --hard
done