webroad.online
  1. 1Web
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Unelte
  8. 8React
  9. 9State management
  10. 10Next.js
  11. 11Formulare
  12. 12Date și backend
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Animații
  16. 16Testare
  17. 17Arhitectură
Git · Lecția 2 din 3

Branch-uri, merge și rebase

Lucru în paralel, merge vs rebase, fast-forward și conflicte.

Actualizat

Ce este un branch

Un branch e o linie paralelă de dezvoltare. Pornești de la main (codul stabil), lucrezi la un feature pe branch-ul tău, iar main rămâne neatins până când decizi să integrezi.

Tehnic, un branch e doar un pointer spre un commit — de aceea crearea lui e instantanee.

mainABCfeat/loginDE

Comenzi

Comandă Ce face
git switch -c feat/login creează branch-ul și treci pe el
git switch main treci pe alt branch
git branch lista branch-urilor locale
git merge feat/login integrează branch-ul în cel curent
git rebase main mută commit-urile tale peste ultimul main
git branch -d feat/login șterge branch-ul (după merge)

Cum integrezi: merge vs rebase

Merge Rebase
Ce face creează un commit de merge care unește cele două istorii rescrie commit-urile tale ca și cum ai fi pornit de la ultimul main
Istoric arată exact ce s-a întâmplat, cu ramificații liniar, mai ușor de citit
Rescrie istoria nu da (commit-uri noi, hash-uri noi)
Sigur pe branch-uri partajate da nu — doar pe branch-ul tău, înainte să-l împarți
Când integrarea în main (de obicei prin PR) să-ți actualizezi branch-ul cu ultimele schimbări din main

Fast-forward

Dacă main nu s-a mișcat de când ai creat branch-ul, merge-ul nu are nimic de „unit”: Git doar mută pointerul main înainte. Se numește fast-forward.

Înainte de merge:

mainABfeatCD

După merge — main a fost doar mutat înainte, pe D:

mainABCD

Squash merge

Toate commit-urile din branch devin un singur commit pe main. Popular pe GitHub: istoricul main rămâne curat (un commit per PR).

Conflicte

Apar când două branch-uri modifică aceleași linii. Git marchează locul:

<<<<<<< HEAD
const limit = 10
=======
const limit = 20
>>>>>>> feat/pagination

Alegi varianta corectă (sau le combini), ștergi marcajele, apoi git add + git commit (sau git rebase --continue). Editorul (VS Code) are butoane pentru asta.

Cum le eviți: branch-uri scurte (zile, nu săptămâni), actualizate des cu main.

Denumirea branch-urilor

feat/login-google
fix/cart-total-rounding
chore/upgrade-next-16

Prefixul spune tipul schimbării, restul — despre ce e vorba, kebab-case.

Pe scurt

  • Branch = pointer spre un commit; lucrezi izolat de main.
  • Merge păstrează istoria; rebase o face liniară, dar o rescrie — doar pe branch-ul tău.
  • Branch-uri scurte = conflicte puține.

Surse oficiale

Exerciții

Ți-a fost utilă pagina?

Un click — fără cont.