git merge în Git

Îmbină istoricul și modificările dintr-o altă ramură în ramura curentă.

Sintaxă comandă
git merge [opțiuni] ramură

Ce face git merge

Comanda git merge aduce modificările dezvoltate pe o ramură secundară (de exemplu o ramură de funcționalitate) în ramura principală (ex. main).

Dacă ramura principală nu a avut alte commit-uri între timp, Git realizează un Fast-Forward (mută simplu indicatorul înainte). Dacă ambele ramuri au evoluat în paralel, creează automat un nou commit special de îmbinare (Merge Commit).

Opțiuni și argumente

Opțiune / Parametru Descriere
--no-ff Creează întotdeauna un commit de îmbinare dedicat, chiar dacă era posibil un Fast-Forward.
--abort Abandonează procesul de îmbinare și readuce depozitul exact la starea dinaintea rulării comenzii dacă au apărut conflicte.
--squash Comprimă toate commit-urile din ramura secundară într-o singură modificare mare în staging.
-m MESAJ Specifică mesajul pentru commit-ul de îmbinare.

Exemple

Exemplul 1: Îmbinarea curată a unei ramuri de feature în main

Creăm o ramură, adăugăm un fișier și îl unim în ramura main.

git init -b main demo_mg >/dev/null
cd demo_mg
git config user.name "Test" && git config user.email "test@exemplu.ro"
echo "v1" > baza.txt && git add baza.txt && git commit -m "init" >/dev/null
git switch -q -c feature/nou
echo "nou" > functionalitate.txt && git add functionalitate.txt && git commit -m "adauga feature" >/dev/null
git switch -q main
git merge feature/nou >/dev/null
ls

Rezultat

baza.txt
functionalitate.txt

Greșeli frecvente

  • Rularea git merge când te afli pe ramura greșită: git merge feature aduce codul ÎN ramura pe care ești în acel moment. Asigură-te întotdeauna că ești pe main înainte de a îmbina o ramură în el.
  • Panica la apariția conflictelor de îmbinare: conflictele apar când ambele ramuri au modificat aceleași rânduri; se rezolvă editând fișierul marcat cu <<<<<<< și >>>>>>>, apoi rulând git add și git commit.

Comenzi înrudite

  • git rebase: Reaplică commit-urile din ramura curentă peste o altă ramură, creând un istoric perfect liniar.
  • git branch: Listează, creează, redenumește sau șterge ramuri (branches) de dezvoltare.
  • git cherry-pick: Copiază și aplică un commit specific dintr-o altă ramură în ramura curentă.