Por Anónimo (no verificado) , 29 Abril 2026

Qué hace rerere

Rerere — "reuse recorded resolution" — observa cómo resuelves un conflicto de merge, registra la resolución, y la reproduce la próxima vez que el mismo conflicto aparezca. Es invaluable en ramas de larga vida que repetidamente hacen rebase o merge contra un main activo.

Habilitación

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

Cómo funciona

Cuando ocurre un conflicto, Git almacena un hash del contexto del conflicto bajo .git/rr-cache/. Tras resolver y hacer commit, la resolución se asocia con ese hash. Futuros merges que produzcan el mismo contexto reciben la resolución registrada automáticamente.

Inspeccionar estado

git rerere status
git rerere diff
git rerere remaining

Olvidar una mala resolución

git rerere forget path/to/file

Caso de uso: tormentas de rebase

Mantienes una rama de feature larga y haces rebase contra main semanalmente. Los mismos conflictos en CHANGELOG.md aparecen cada vez. Sin rerere los re-resuelves; con rerere, la primera resolución manual se reproduce el resto del rebase.

Caso de uso: rama de integración

Algunos equipos mantienen una rama de "integración" que re-fusiona todas las ramas de feature cada noche para detectar conflictos pronto. Rerere hace casi automáticos esos merges nocturnos.

Errores comunes

Confiar ciegamente en rerere: siempre inspecciona con git diff --staged antes de hacer commit. Rerere coincide por contexto, no por intención semántica.

Entrenar rerere desde la historia

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