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 |
|---|---|
<upstream> |
Ramura în care cauți modificări echivalente (implicit ramura urmărită pe server). |
<head> |
Ramura verificată (implicit HEAD). |
<limită> |
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 mainră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.