Guide Git
Git cherry-pick: copia un commit su un altro ramo e risolvi i conflitti
Hai bisogno di una correzione di bug senza unire l'intero ramo di funzionalità? Scopri come funziona la selezione, scegli la destinazione corretta, gestisci i commit dipendenti ed esamina visivamente il risultato in GitTree.
Git cherry-pick applica la modifica introdotta da un commit al tuo ramo corrente, solitamente registrando un nuovo commit. Passa al ramo che dovrebbe ricevere la correzione, controlla il commit di origine, quindi esegui git cherry-pick <commit>. Il ramo di origine rimane al suo posto. Se la patch è in conflitto, risolvere i file e continuare oppure interrompere l'operazione.
Immagina che un bug di pagamento sia stato corretto su feature/checkout, mentre un ramo di rilascio necessita solo di quella correzione. L'unione dell'intera funzionalità potrebbe portare a un lavoro incompiuto. Questa guida mostra come copiare solo la correzione con Git e con GitTree, il client che creiamo per macOS, Windows e Linux. Il valore extra del percorso visivo è controllare il ramo di destinazione e la differenza di origine prima di applicare la modifica.
Cherry-pick vs merge vs rebase: scegli l'operazione
| Obiettivo | Operazione | Effetto |
|---|---|---|
| Riunisci un ramo e i suoi antenati | Unisci | Integra le storie delle filiali |
| Riproduci una linea di sviluppo su un'altra base | Ribasare | Riscrive i commit riprodotti |
| Porta le modifiche selezionate senza l'intero ramo | Scegli la ciliegia | Applica le patch selezionate al ramo corrente |
Il cherry-pick è utile per un backport o una piccola correzione eseguita sul ramo sbagliato. È un pessimo sostituto dell’unione ripetuta di due rami che dovrebbero condividere tutto il lavoro: le modifiche copiate possono diventare difficili da tenere traccia. Per un flusso di lavoro dell'intero ramo, consulta rebase interattivo e la guida al grafico di commit.
Come scegliere un commit su un altro ramo
Inizia con un albero funzionante e pulito. Effettua il commit o l'archiviazione delle modifiche non completate; la guida alla scorta copre il flusso di lavoro di pausa e ripresa. Recupera se la correzione è remota, quindi controlla la cronologia dell'origine. I nomi dei rami e l'hash riportati di seguito sono esempi: sostituiscili con un ramo di destinazione esistente, il ramo di origine e l'effettivo hash di correzione.
git status
git fetch origin
git log --oneline origin/feature/checkout
git show abc1234
git switch release/2.x
git status
git cherry-pick -x abc1234
git show --stat HEAD
git status-x aggiunge il riferimento al commit dell'origine al messaggio per una scelta precisa, che aiuta a tracciare i backport pubblici. Recupera gli aggiornamenti dei riferimenti di tracciamento remoto; non aggiorna automaticamente il ramo di rilascio estratto. Conferma che la destinazione corrisponda alla revisione prevista dal tuo team. Esamina il nuovo commit ed esegui i test del ramo di rilascio prima di eseguire il push.
Il commit selezionato normalmente ha un hash diverso perché il suo genitore e gli altri metadati del commit differiscono. Il suo originale rimane sul ramo di origine. La copia di una correzione non la rimuove dal ramo sbagliato; decidere come ripulire quel ramo è una decisione storica separata, soprattutto se altre persone lo usano già.
Come scegliere visivamente in GitTree
Apri il ramo di destinazione
Controlla il ramo che necessita della correzione. Esamina la riga WIP e conferma o memorizza le modifiche prima di iniziare.
Ispeziona il commit di origine
Trova la correzione nel grafico e leggi la sua differenza. Controlla se presuppone modifiche precedenti che la destinazione non contiene.
Scegli l'impegno Cherry-Pick
Fare clic con il pulsante destro del mouse sul commit di origine e selezionare Cherry-Pick Commit. Per diversi commit, utilizza Ctrl-clic o Comando-clic per selezionare le righe, quindi Cherry-Pick Commits; controllare le dipendenze e l'ordinamento prima di iniziare.
Risolvere o interrompere se si interrompe
Utilizza il banner di conflitto per aprire i file interessati. Risolvere e mettere in scena i risultati, quindi Continua; scegliere Interrompi per abbandonare l'operazione attiva.
Rivedi la nuova cronologia
Ispeziona il nuovo commit nella parte superiore del ramo ricevente, testa il comportamento interessato e rivedi nuovamente il ramo prima di inviare.

Scarica GitTree per seguire questo flusso di lavoro con un grafico visivo e un editor di conflitti. Cherry-pick è incluso nel piano gratuito, inclusi i repository privati. Accedi all'attuale app ufficiale, apri il tuo repository esistente e utilizza la stessa cronologia Git che già possiedi.
Scegli più commit e intervalli
git cherry-pick abc1234 def5678
# A linear range, including the first commit:
git cherry-pick "abc1234^..def5678"Questi sono esempi alternativi. Un elenco esplicito seleziona i commit nell'ordine fornito; mettere al primo posto le modifiche ai prerequisiti. Un intervallo segue le regole del set di revisioni anziché selezionare le righe che ti capita di vedere in un grafico. A..B esclude A; A^..B include A per una sequenza lineare semplice quando A ha un genitore. Per un backport per principianti, preferisci un elenco esplicito e rivisto su un intervallo che attraversa le unioni.
Risolvi i conflitti di selezione e continua
Quando Git non può applicare la patch, va in pausa. Esegui git status per identificare l'operazione e i percorsi in conflitto, quindi modifica il risultato previsto. Utilizza la guida alla risoluzione dei conflitti per esempi di indicatori e l'editor a tre vie GitTree. Una risoluzione sintatticamente pulita necessita ancora di test: la destinazione potrebbe utilizzare API diverse.
git status
git diff --name-only --diff-filter=U
# Resolve the file, then check and stage it:
git diff --check
git add -- src/payment.ts
git diff --cached
git cherry-pick --continueUna sequenza può essere messa in pausa più di una volta, una volta per ogni commit problematico. Se Git dice che la scelta è vuota, controlla se la modifica è già presente o se la tua risoluzione l'ha rimossa. Utilizza git cherry-pick --skip solo quando vuoi deliberatamente omettere quel commit; non è una soluzione generale al conflitto.
Git seleziona interruzione, esci o salta
| Comando | Significato |
|---|---|
git cherry-pick --continue | Continuare dopo la risoluzione e la messa in scena |
git cherry-pick --abort | Annulla e ripristina lo stato pre-sequenza |
git cherry-pick --skip | Ometti il commit corrente e continua la sequenza |
git cherry-pick --quit | Dimentica lo stato dell'operazione lasciando i file correnti e i commit in atto |
Unisci commit, dipendenze mancanti e annullamento di una scelta
Un commit di unione necessita di un genitore principale perché rappresenta le modifiche relative a più di un genitore. Esaminalo con git show --no-patch --pretty=raw <merge> prima di considerare git cherry-pick -m 1 <merge>. Il genitore 1 non è universalmente corretto. GitTree ti chiede di selezionare il genitore; scegli in base alla storia con cui vuoi confrontare, non per abitudine. Spesso è più facile ragionare sulla scelta del commit della correzione ordinaria originale.
Se la correzione copiata viene creata in modo errato, controllane i prerequisiti: un helper, una modifica dello schema o una configurazione potrebbero trovarsi in un commit precedente. Un'operazione Git riuscita dimostra solo che la patch è stata applicata. Testare il ramo ricevente. Per annullare una scelta completata sulla cronologia condivisa, ripristina il nuovo commit creato sul ramo di destinazione, non l'hash di origine originale. Per il lavoro non pubblicato, rivedi le scelte di ripristino e ripristino in annullamento degli errori Git prima di spostare la cronologia del ramo.
Domande frequenti
Il cherry-pick sposta o copia un commit?
Applica le modifiche al ramo corrente, solitamente creando un nuovo commit. Non elimina il commit di origine né sposta il ramo di origine.
Quale filiale dovrei controllare per prima?
Controlla la destinazione: la filiale che dovrebbe ricevere il resto. Seleziona il commit di origine solo dopo aver controllato il ramo di destinazione.
Perché un conflitto di scelta è in conflitto?
La patch viene applicata a un contesto diverso. La destinazione potrebbe aver modificato o eliminato le stesse righe oppure non avere modifiche ai prerequisiti.
Posso scegliere senza impegnarmi?
SÌ. git cherry-pick --no-commit applica le modifiche selezionate all'albero di lavoro e all'indice senza effettuare i consueti commit. Rivedi e conferma tu stesso il risultato.
Il cherry-pick è gratuito in GitTree?
SÌ. Il piano gratuito include questa operazione Git locale anche per repository privati. Le build ufficiali attuali richiedono l'accesso.
Fonti
Le affermazioni su altri prodotti sono state confrontate con le rispettive pagine ufficiali in data 28 ottobre 2026. Cambiano prezzi e caratteristiche; le pagine dei venditori sono la fonte della verità.