Skip to content

Cum să faci merge între branch-uri în Git — Ghid complet

DodaTech Updated 2025-01-15 3 min read

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-ff pentru branch-uri de feature pentru a păstra contextul
  • Folosește --squash pentru 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

  1. Merge cu fast-forward pe feature branch-uri — pierzi contextul că acele commit-uri făceau parte dintr-un feature
  2. Squash după ce ai făcut deja push pe branch — duce la commit-uri duplicate în istoric
  3. Rezolvarea conflictelor fără a testa — bug-uri subtile apar din rezolvarea greșită a conflictelor
  4. 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

### Ce diferență este între git merge --no-ff și git merge implicit?

Merge-ul implicit face fast-forward dacă este posibil, fără a crea un commit de merge. --no-ff forțează crearea unui commit de merge chiar și când fast-forward este posibil, păstrând contextul ramurii.

Când ar trebui să folosesc git merge --squash?

Folosește --squash când commit-urile intermediare de pe un branch nu sunt relevante individual — de exemplu, commit-uri mici de tip "wip" sau "fix typo". Rezultatul este un singur commit curat în istoric.

Cum rezolv un conflict de merge?

Editează fișierul conflictual, unde Git marchează zonele conflictuale cu <<<<<<<, ======= și >>>>>>>. Alege versiunea corectă, șterge marcajele, apoi git add și git commit pentru a finaliza merge-ul.

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