Git Cherry-pick
Ultimo aggiornamento
git cherry-pick copia le modifiche di uno o più commit specifici e le applica al branch corrente come nuovi commit. È il modo per prendere una singola correzione da un altro branch senza fare il merge dell'intero branch: utile per riportare un hotfix su una versione precedente o per estrarre un commit da un feature branch.
Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.
Sintassi
| Comando | Cosa fa |
|---|---|
git cherry-pick <hash> | Applica un commit al branch corrente |
git cherry-pick <a> <b> | Applica più commit in ordine |
git cherry-pick <a>..<b> | Applica un intervallo di commit (a escluso) |
git cherry-pick -n <hash> | Applica le modifiche ma non fa ancora il commit |
git cherry-pick -x <hash> | Annota il commit originale nel messaggio |
Durante un cherry-pick
Se un cherry-pick incontra un conflitto, risolvilo e continua.
| Comando | Cosa fa |
|---|---|
git cherry-pick --continue | Riprende dopo aver risolto i conflitti |
git cherry-pick --abort | Annulla e ripristina il branch |
git cherry-pick --skip | Salta il commit corrente |
Esempio pratico
| Passo | Comando | Risultato |
|---|---|---|
| 1 | git log --oneline hotfix | Trova l'hash della correzione, per esempio a1b2c3d |
| 2 | git switch main | Passa al branch che deve ricevere la correzione |
| 3 | git cherry-pick a1b2c3d | Applica la correzione a main come nuovo commit con un nuovo hash |
Domande frequenti su git cherry-pick
Cosa fa git cherry-pick?
Quando conviene usare cherry-pick?
main a un branch di release, o per estrarre un singolo commit utile da un feature branch senza unire tutto. Se vuoi l'intero branch, usa invece merge o rebase.Come faccio il cherry-pick di più commit?
git cherry-pick <a> <b> <c> li applica uno dopo l'altro. Per un intervallo continuo usa git cherry-pick <start>..<end>, che applica ogni commit dopo start fino a end incluso. Usa <start>^..<end> se vuoi includere anche start.E se un cherry-pick causa un conflitto?
git add sui risultati, poi git cherry-pick --continue. Per tornare del tutto indietro usa git cherry-pick --abort, che riporta il branch allo stato precedente al cherry-pick.Come faccio il cherry-pick di un commit da un altro branch?
git log --oneline <other-branch>, passa al branch che deve riceverlo ed esegui git cherry-pick <hash>. Puoi anche passare il nome di un branch, come in git cherry-pick feature, che prende il commit in cima a quel branch.Che differenza c'è tra cherry-pick e merge?
Posso esercitarmi online?
git cherry-pick in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come spostare commit tra branch passo dopo passo.