Reutilizarea Rezolvării Conflictelor cu git rerere (Reuse Recorded Resolution) în Git

Ramuri și îmbinare Standard Git

Ghid complet pentru mecanismul git rerere: memorarea automată a modului în care ai rezolvat un conflict și aplicarea lui instantanee în timpul viitoarelor operațiuni de rebase sau merge.

Sintaxă comandă
git config --global rerere.enabled true | git rerere status | git rerere diff

Una dintre cele mai frustrante experiențe în Git apare atunci când lucrați pe o ramură de feature de lungă durată și trebuie să faceți periodic git rebase main sau teste de integrare: de fiecare dată când dați rebase, vă loviți de exact aceleași conflicte de merge pe care le-ați rezolvat manual cu o zi înainte! Mecanismul git rerere (Reuse Recorded Resolution) rezolvă definitiv această problemă.

1. Activarea mecanismului rerere
# Activăm rerere la nivel global pentru toate depozitele de pe mașina locală:
git config --global rerere.enabled true

# Opțional: forțează adăugarea automată a fișierelor rezolvate în staging (index):
git config --global rerere.autoupdate true

Cum funcționează rerere în culise?

  1. În momentul în care apare un conflict de merge sau rebase, rerere salvează o amprentă (pre-image) a fișierului în folderul ascuns .git/rr-cache/.
  2. Dezvoltatorul rezolvă manual conflictul în editorul de cod și salvează fișierul.
  3. Când comiteți rezolvarea (git commit), rerere înregistrează starea finală (post-image).
  4. Data viitoare când Git întâlnește același conflict pe acel fișier (la un viitor rebase sau merge pe alt branch), rerere detectează potrivirea și aplică automat rezolvarea ta precedentă, afișând mesajul: „Resolved ‘fisier.php’ using previous resolution”!
Comenzi de diagnostic pentru rerere
# Listează fișierele ale căror conflicte au fost rezolvate automat în operațiunea curentă:
git rerere status

# Afișează diferențele dintre starea inițială conflictuală și rezolvarea aplicată:
git rerere diff

# Șterge rezolvarea memorată pentru un fișier (dacă vrei să o reiei de la zero):
git rerere forget calea/catre/fisier.php