git cherry în Git

Arată care commit-uri dintr-o ramură nu au ajuns încă în alta, recunoscând și pe cele copiate deja cu cherry-pick.

Sintaxă comandă
git cherry [-v] [<upstream> [<head> [<limită>]]]

Ce face git cherry

git cherry main feature listează commit-urile din feature care nu sunt în main. Spre deosebire de git log main..feature, compară conținutul modificărilor (patch-id), nu hash-urile: dacă un commit a fost deja copiat în main cu git cherry-pick (și are alt hash), îl recunoaște.

Fiecare linie începe cu + (modificarea încă lipsește din upstream) sau - (există deja o modificare echivalentă). E util înainte de a șterge o ramură veche sau când pregătești ce mai trebuie copiat într-o ramură de lansare.

Opțiuni și argumente

Opțiune / Parametru Descriere
&lt;upstream&gt; Ramura în care cauți modificări echivalente (implicit ramura urmărită pe server).
&lt;head&gt; Ramura verificată (implicit HEAD).
&lt;limită&gt; Nu afișa commit-urile până la această limită, inclusiv.
-v Afișează și titlul fiecărui commit.

Exemple

Exemplul 1: Ce a ajuns deja în main dintr-o ramură de lucru

Corectura de TVA a fost copiată în main cu cherry-pick (hash diferit). git cherry o marchează cu -, iar git log main..feature/cos ar afișa-o în continuare. Datele sunt fixate pentru hash-uri stabile.

export GIT_AUTHOR_DATE="2026-10-20T10:00:00+03:00" GIT_COMMITTER_DATE="2026-10-20T10:00:00+03:00"
git init -q -b main magazin
cd magazin
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
echo 'Produse' > produse.txt && git add . && git commit -q -m "Start"
git switch -q -c feature/cos
echo 'cos = []' > cos.py && git add . && git commit -q -m "Cos de cumparaturi"
echo 'TVA = 0.21' > taxe.py && git add . && git commit -q -m "Corectura TVA 21%"
echo 'LIVRARE = 0' > livrare.py && git add . && git commit -q -m "Livrare gratuita"
git switch -q main
echo 'Telefon 1200 lei' >> produse.txt && git commit -q -am "Produs nou"
git cherry-pick feature/cos~1 >/dev/null
git cherry -v main feature/cos

Rezultat

+ bf934e8adaa2477453a4bb7c585f483854581df4 Cos de cumparaturi
- c26a1e179a5a559b90c294ed60c6d18063ad1770 Corectura TVA 21%
+ c48aa1b613b4d3d17d031ccc6d90a237a51f8516 Livrare gratuita

Exemplul 2: Commit-uri locale netrimise pe server

Fără argumente, comparația se face cu ramura urmărită (origin/main): vezi ce urmează să trimiți la git push.

git cherry -v

Ieșire în terminal

+ 4f2a91c0d6b8e3a7f1c25e9d0b4a6c8e2f1d3b57 Validare CNP la inregistrare
+ 9c1e7b3a5d2f4e6081a3c5b7d9e1f2a4c6b8d0e2 Mesaje de eroare in romana

Greșeli frecvente

  • Ordinea greșită a argumentelor: primul este ramura în care cauți (upstream), al doilea ramura ale cărei commit-uri le verifici. git cherry feature main răspunde la altă întrebare.
  • Încrederea oarbă în - pentru commit-uri copiate cu conflicte rezolvate manual: dacă la cherry-pick conținutul s-a schimbat, patch-id-ul diferă și commit-ul apare cu +.

Comenzi înrudite

  • git cherry-pick: Copiază și aplică un commit specific dintr-o altă ramură în ramura curentă.
  • git log: Afișează istoricul cronologic al commit-urilor, cu autor, dată, hash și mesaj.
  • git branch: Listează, creează, redenumește sau șterge ramuri (branches) de dezvoltare.