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 mergecând te afli pe ramura greșită:git merge featureaduce codul ÎN ramura pe care ești în acel moment. Asigură-te întotdeauna că ești pemainî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ândgit addșigit 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ă.