Menu
Coddy logo textTech

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.

git cherry-pick copia un commit scelto da un altro branch e lo applica al branch corrente.

Sintassi

ComandoCosa 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.

ComandoCosa fa
git cherry-pick --continueRiprende dopo aver risolto i conflitti
git cherry-pick --abortAnnulla e ripristina il branch
git cherry-pick --skipSalta il commit corrente

Esempio pratico

PassoComandoRisultato
1git log --oneline hotfixTrova l'hash della correzione, per esempio a1b2c3d
2git switch mainPassa al branch che deve ricevere la correzione
3git cherry-pick a1b2c3dApplica la correzione a main come nuovo commit con un nuovo hash

Domande frequenti su git cherry-pick

Cosa fa git cherry-pick?
Prende le modifiche introdotte da un commit specifico e le applica al branch corrente come un commit completamente nuovo (con un nuovo hash). A differenza di merge o rebase, non porta con sé un intero branch: solo il commit o i commit che indichi.
Quando conviene usare cherry-pick?
Usalo quando ti serve un commit preciso da un'altra parte: per esempio per riportare una correzione da 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?
Elencali: 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 si ferma e segna i file in conflitto. Risolvili, esegui 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?
Trova l'hash del commit con 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?
git merge porta con sé tutti i commit di un branch e registra il punto in cui le cronologie si uniscono. Cherry-pick copia solo i commit che indichi, come nuovi commit, senza alcun collegamento agli originali. Fai il merge del branch quando lo vuoi tutto; usa cherry-pick quando ti servono uno o due commit.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire 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.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA