git cherry-pick în Git

Aplică modificările introduse de un commit specific dintr-o altă ramură peste ramura curentă de lucru.

Sintaxă comandă
git cherry-pick <commit-hash>

Există situații frecvente în care un coleg a rezolvat un bug critic pe o ramură experimentală `feature-ai`, dar acea ramură conține și zeci de alte modificări neterminate care nu pot fi îmbinate (merge) încă în producție.

Comanda git cherry-pick extrage exclusiv ‘patch-ul’ generat de commit-ul specificat și îl aplică ca un commit nou pe ramura activă curentă, fără a aduce restul istoricului ramurii sursă.

Este unealta ideală pentru portarea de remedieri de securitate urgente (backporting) între ramuri de versiuni diferite (de exemplu de pe versiunea `v2.0` pe versiunea de suport pe termen lung `v1.8`).

Sintaxă, opțiuni și concepte cheie

Opțiune / Concept Descriere practică
Identificatorul SHA-1 al commit-ului care trebuie extras și aplicat.
-n, --no-commit Aplică modificările în fișiere și în staging area fără a genera automat un commit nou.
-e, --edit Deschide editorul pentru a permite personalizarea mesajului de commit înainte de salvare.
--continue / --abort Reia procesul după rezolvarea unui conflict sau abandonează complet operațiunea.

Exemple practice și cod

Exemplul 1: Portarea unui commit de securitate de pe ramura de dev pe ramura main

Cum se extrage un singur commit curat.

# 1. Identificăm hash-ul commit-ului dorit pe ramura de dev:
$ git log --oneline dev
3a8f1b2 Fix vulnerabilitate SQL Injection în login

# 2. Comutăm pe ramura de producție și aplicăm modificarea:
$ git checkout main
$ git cherry-pick 3a8f1b2

[main 9d2c4e1] Fix vulnerabilitate SQL Injection în login
 Date: Sat Oct 24 10:15:00 2026
 1 file changed, 4 insertions(+), 1 deletion(-)

Rezultat & Impact

Remedierea de securitate este integrată instant pe producție fără modificările colaterale din dev.

Greșeli frecvente și bune practici

  • Folosirea abuzivă a comenzii în locul unui merge sau rebase standard, ceea ce duce la duplicarea commit-urilor cu hash-uri diferite în arborele Git.
  • Cherry-pick-ul unui commit care depinde de modificări structurale din commit-uri anterioare, declanșând conflicte masive de merge.

Ghiduri și noțiuni înrudite