Cum să faci rebase în Git — Ghid complet
In this tutorial, you'll learn about Cum să faci rebase în Git. We cover key concepts, practical examples, and best practices.
În acest ghid vei învăța cum să folosești git rebase, interactive rebase și --onto pentru a menține un istoric linear și curat al commit-urilor.
The Problem
Commit-urile de tip "WIP", "fix" sau "update" aglomerează istoricul și fac revizuirea codului dificilă. Rebase-ul îți permite să rescrii istoricul pentru a-l face clar și logic.
The Wrong Way
git pull
# apare un merge commit inutil în istoric
git log --oneline
# 1a2b Merge branch 'main' of origin
# 3c4d feat: adauga ceva
# 5e6f Merge branch 'main' of origin
Merge commit-urile frecvente aglomerează istoricul și îl fac greu de urmărit.
The Right Way
# Rebase pe main
git checkout feature
git rebase main
# Interactive rebase
git rebase -i HEAD~3
# Rebase cu --onto
git rebase --onto main feature feature-sub
Step-by-Step Fix
1. Rebase simplu pe un branch
Rescrie commit-urile branch-ului tău deasupra altui branch:
git checkout feature
git rebase main
Output:
Successfully rebased and updated refs/heads/feature.
2. Interactive rebase (rebase -i)
Combină, editează sau reordonează commit-uri:
git rebase -i HEAD~3
Se deschide un editor cu următoarele opțiuni:
pick a1b2c3 feat: adauga login
pick d4e5f6 fix: typo in login
pick g7h8i9 feat: finalizeaza login
# Comenzi:
# p, pick = folosește commit-ul
# r, reword = modifică mesajul
# s, squash = combină cu commit-ul anterior
# d, drop = șterge commit-ul
3. Rebase cu --onto
Mută commit-urile de pe un branch pe altul:
git rebase --onto main feature-base feature-target
Acest lucru mută commit-urile din feature-target care nu sunt în feature-base direct pe main.
4. Rebase în loc de merge la pull
git pull --rebase
Sau configurează ca comportament implicit:
git config --global pull.rebase true
Prevention Tips
- Nu face rebase pe branch-uri publice la care lucrează și alții
- Folosește interactive rebase pentru a curăța commit-urile înainte de pull request
- Fă rebase des (zilnic) pentru a minimiza conflictele
- După rebase, s-ar putea să ai nevoie de
git push --force-with-lease - Verifică întotdeauna cu
git logînainte și după rebase
Common Mistakes
- Rebase pe branch-uri publice — rescrie istoricul și cauzează haos pentru ceilalți dezvoltatori
- Forget să faci rebase înainte de pull request — duce la conflicte greu de rezolvat
- Squash excesiv — pierzi contextul commit-urilor individuale
- Confuzia între merge și rebase — ambele integrează schimbări, dar rescriu istoricul diferit
Aceste greșeli apar frecvent în lucrul cu Git. Contribuitorii DodaTech le-au identificat prin analiza proiectelor open-source și a sistemelor de producție.
Practice Exercise
Exercițiu: Creează 4 commit-uri pe un branch, apoi folosește git rebase -i HEAD~4 pentru a squasha ultimele 2 și a redenumi unul.
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează perfect cu Git pentru productivitate și securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro