Ce face git rebase
În timp ce git merge păstrează istoricul ramificat creând un commit de îmbinare, git rebase ia commit-urile tale, le desprinde temporar și le ‘lipește’ la capătul noii ramuri, de parcă ai fi început să scrii codul chiar pe cea mai recentă versiune.
Cu modul interactiv (git rebase -i), devine cel mai puternic editor de istoric: permite reordonarea, comasarea (squash), editarea mesajelor sau ștergerea commit-urilor înainte de a le face publice.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-i, --interactive |
Lansează editorul interactiv pentru a edita, combina (squash) sau reordona commit-urile. |
--abort |
Anulează complet rebase-ul și readuce ramura în starea inițială dacă apar probleme. |
--continue |
Continuă procesul de rebase după ce ai rezolvat conflictele și ai rulat git add. |
--skip |
Sare peste commit-ul curent care produce conflict. |
Exemple
Exemplul 1: Curățarea istoricului cu rebase interactiv
Permite combinarea ultimelor 3 commit-uri într-unul singur cu comanda ‘squash’.
git rebase -i HEAD~3
Ieșire în terminal
pick 1a2b3c4 Adauga structura de baza
squash 2b3c4d5 Corecteaza un typo
squash 3c4d5e6 Adauga teste unitare
# Rebase 0a1b2c3..3c4d5e6 onto 0a1b2c3 (3 commands)
# p, pick = pastreaza commit
# s, squash = uneste commit-ul in cel anterior
Greșeli frecvente
- Regula de aur a rebase-ului: NU aplica NICIODATĂ
git rebasepe o ramură publică comună (cum ar fimainîmpărțit cu echipa)! Rescrierea istoricului pe ramuri publice forțează ceilalți dezvoltatori să își repare manual depozitele locale.
Comenzi înrudite
git merge: Îmbină istoricul și modificările dintr-o altă ramură în ramura curentă.git cherry-pick: Copiază și aplică un commit specific dintr-o altă ramură în ramura curentă.git reset: Mută indicatorul ramurii curente (HEAD) la un commit anterior și ajustează staging-ul sau fișierele locale.