Ce que fait rerere
Rerere — "reuse recorded resolution" — observe comment vous résolvez un conflit de merge, enregistre la résolution et la rejoue la prochaine fois que le même conflit apparaît. Inestimable sur les branches de longue durée qui rebasent ou mergent à répétition contre un main actif.
Activation
git config --global rerere.enabled true
git config --global rerere.autoupdate true
Comment ça marche
Quand un conflit survient, Git stocke un hash du contexte du conflit sous .git/rr-cache/. Après résolution et commit, la résolution est associée à ce hash.
Inspecter l'état
git rerere status
git rerere diff
git rerere remaining
Oublier une mauvaise résolution
git rerere forget path/to/file
Cas d'usage : tempêtes de rebase
Vous maintenez une longue branche feature et rebasez chaque semaine contre main. Les mêmes conflits dans CHANGELOG.md apparaissent à chaque fois.
Cas d'usage : branche d'intégration
Certaines équipes maintiennent une branche d'intégration qui re-merge toutes les branches feature chaque nuit.
Erreurs courantes
Faire confiance à rerere aveuglément : inspectez toujours avec git diff --staged avant de commiter.
Entraîner rerere depuis l'historique
git rev-list --merges main | while read merge; do
git checkout "$merge^"
git merge "$merge^2" || git rerere
git reset --hard
done