Sinossi
git cherry-pick [-n] [-x] [--continue] [--abort] <commit>...
Descrizione
Il comando git cherry-pick applica le modifiche introdotte da uno o più commit esistenti sul branch corrente come nuovi commit. È lo strumento giusto quando hai bisogno di un singolo fix da un altro branch senza mergiare l'intero branch. I cherry-pick creano nuovi commit con nuovi SHA ma preservano l'autore originale e il messaggio.
Cherry-picking può produrre conflitti come un merge. Usa --continue dopo aver risolto, o --abort per uscire. Il flag -x aggiunge una riga "(cherry picked from commit ...)" al messaggio — utile per la tracciabilità quando si portano fix tra branch di manutenzione.
Nell'uso quotidiano, git cherry-pick si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-n, --no-commit | Applica le modifiche ma non committa ancora. |
-x | Annota il messaggio di commit con lo SHA sorgente. |
-e, --edit | Modifica il messaggio di commit prima di committare. |
--continue | Riprende dopo aver risolto i conflitti. |
--abort | Cancella e ripristina lo stato precedente. |
--skip | Salta il commit corrente e continua. |
-m <parent> | Specifica mainline quando si fa cherry-pick di un merge commit. |
-S | Firma GPG i commit risultanti. |
Esempi
git cherry-pick abc123
# Applica un singolo commit sul branch corrente
git cherry-pick -x abc123 def456
# Applica due commit con annotazioni di tracciabilità
git cherry-pick A..B
# Fa pick di un range (esclusivo di A, inclusivo di B)
git cherry-pick --continue
# Continua dopo aver corretto i conflitti
Errori comuni
Fare cherry-pick della stessa modifica ripetutamente può confondere i merge successivi, poiché commit identici hanno SHA diversi. Usa git rerere per ricordare le risoluzioni. Fare pick di un merge senza -m fallisce. Per lunghe sequenze, preferisci rebase o merge.
Comandi correlati
git rebase, git revert, git merge, git rerere