Sari la conținut
← Git & GitHub pentru developeri
Progres curs 0 / 7 lecții (0%)

Rebase pe scurt

Rebase rescrie istoria: în loc să creezi un commit de merge, „rejoci" commit-urile tale peste vârful actual al altui branch. Rezultatul e o istorie liniară, mai ușor de citit. Are o regulă de aur: nu faci rebase la commit-uri deja împinse și folosite de alții.

Merge vs. rebase

Merge: păstrează istoria exact cum s-a întâmplat, cu un commit de îmbinare. Rebase: rescrie commit-urile tale ca și cum ai fi pornit de la cel mai nou main — istorie liniară, fără commit-uri de merge.

Rebase pe main

git switch functie/x
git fetch origin
git rebase origin/main
# commit-urile tale sunt acum "deasupra" celui mai nou main
# la conflicte: rezolvi, apoi: git rebase --continue

Regula de aur

NU face rebase la commit-uri pe care le-ai împins deja și pe care le-ar putea avea și altcineva. Rebase-ul le schimbă identitatea (hash-ul), iar ceilalți ajung cu istorii divergente. Rebase doar la commit-uri locale, ne-împărtășite.

Squash înainte de merge

# combină ultimele 3 commit-uri într-unul curat:
git rebase -i HEAD~3
# în editor: lași "pick" pe primul, pui "squash" pe celelalte

Când folosești ce

  • Rebase: pentru a-ți curăța branch-ul local înainte de PR.
  • Merge: pentru a integra un PR aprobat în main (adesea „squash and merge" pe GitHub).
  • Dacă ai dubii și lucrezi în echipă: merge e mai sigur.

Curățarea unui branch înainte de PR

git switch functie/export
git fetch origin
git rebase origin/main          # aduci branch-ul la zi, liniar
git rebase -i HEAD~4            # combini commit-urile "wip" într-unul clar
git push --force-with-lease     # rescrie branch-ul TĂU pe remote (safe force)

Exercițiu

Pe un branch local cu 3-4 commit-uri mici („wip", „fix typo"), fă git rebase -i și combină-le într-1-2 commit-uri cu mesaje bune. Apoi rebase pe main. NU face asta pe un branch pe care lucrează și altcineva.

Greșeli frecvente

  • Rebase la commit-uri deja împinse și folosite de colegi.
  • git push --force (brutal) în loc de --force-with-lease.
  • Rebase în mijlocul unui conflict fără să înțelegi ce rejoci.
  • Folosești rebase peste tot „că e mai curat" fără să înțelegi riscul.

De reținut

  • Rebase = istorie liniară, rejucând commit-urile tale peste main.
  • Regula de aur: doar la commit-uri locale, ne-împărtășite.
  • rebase -i pentru squash / curățare înainte de PR.
  • --force-with-lease, niciodată --force simplu.

Pe scurt

Rebase îți dă o istorie curată, dar rescrie commit-uri. Folosește-l pe branch-urile tale locale; pentru integrare în echipă, merge e mai sigur.

Folosim cookie-uri esențiale pentru funcționarea site-ului și, cu acordul tău, cookie-uri de analiză și publicitate. Partenerii noștri, inclusiv Google, pot folosi cookie-uri pentru a afișa reclame relevante. Detalii în Politica de cookie-uri.