Cum să faci merge între branch-uri în Git — Ghid complet
In this tutorial, you'll learn about Cum să faci merge între branch. We cover key concepts, practical examples, and best practices.
În acest ghid vei învăța cum să faci merge între branch-uri în Git folosind --no-ff, --squash și cum să alegi strategia potrivită pentru echipa ta.
The Problem
Fuzionarea incorectă a branch-urilor duce la un istoric haotic, conflicte greu de rezolvat și pierderea contextului schimbărilor. O strategie de merge bine aleasă păstrează istoricul curat și ușor de urmărit.
The Wrong Way
git checkout main
git merge feature
# merge implicit, cu tot istoricul haotic
Merge-ul implicit fără opțiuni poate crea un istoric greu de citit, mai ales când dezvoltarea pe branch a fost dezordonată.
The Right Way
# Merge cu commit explicit (--no-ff)
git checkout main
git merge --no-ff feature-x
# Squash (comprimă toate commit-urile într-unul singur)
git merge --squash feature-x
git commit -m "feat: adauga sistemul de cautare"
Step-by-Step Fix
1. Merge implicit (fast-forward)
Când branch-ul sursă este direct în fața branch-ului destinație:
git checkout main
git merge feature
Dacă este posibil, Git face fast-forward — nu creează un commit de merge.
2. Merge cu --no-ff (fără fast-forward)
Forțează crearea unui commit de merge, chiar dacă fast-forward este posibil:
git checkout main
git merge --no-ff feature-login
Output:
Merge made by the 'ort' strategy.
3 files changed, 45 insertions(+), 12 deletions(-)
Acest commit de merge păstrează contextul că o ramură întreagă a fost integrată.
3. Squash merge (--squash)
Comprimă toate commit-urile unui branch într-un singur commit:
git checkout main
git merge --squash feature-messaging
git commit -m "feat: adauga sistemul de mesagerie"
Output:
Squash commit -- not updating HEAD
5 files changed, 120 insertions(+), 30 deletions(-)
4. Rezolvă conflictele de merge
Când apare un conflict:
git merge feature
# CONFLICT in index.html
Editează fișierul conflictual, apoi:
git add index.html
git commit
Prevention Tips
- Folosește
--no-ffpentru branch-uri de feature pentru a păstra contextul - Folosește
--squashpentru branch-uri mici unde commit-urile intermediare nu sunt relevante - Comunică strategia de merge cu întreaga echipă
- Fă pull înainte de merge pentru a minimiza conflictele
- Testează branch-ul sursă înainte de a face merge pe main
Common Mistakes
- Merge cu fast-forward pe feature branch-uri — pierzi contextul că acele commit-uri făceau parte dintr-un feature
- Squash după ce ai făcut deja push pe branch — duce la commit-uri duplicate în istoric
- Rezolvarea conflictelor fără a testa — bug-uri subtile apar din rezolvarea greșită a conflictelor
- Abandonarea branch-ului după merge fără ștergere — aglomerează lista de branch-uri
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ă două branch-uri, fă modificări diferite pe același fișier în ambele, apoi fă merge cu --no-ff și rezolvă conflictul manual.
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