Close

Git Cherry Pick

git cherry-pick è un efficace comando che consente di scegliere i commit Git arbitrari come riferimento e aggiungerli all'attuale HEAD di lavoro. Il cherry-pick è l'atto di raccogliere un commit da un branch e applicarlo a un altro branch. git cherry-pick può essere utile per annullare le modifiche. Ad esempio, supponiamo che sia stato eseguito accidentalmente un commit nel branch sbagliato. Puoi passare al branch corretto ed eseguire il cherry-pick del commit nella posizione corretta.


Quando usare git cherry pick


git cherry-pick è uno strumento utile, ma non sempre una best practice. Il cherry-pick può causare la creazione di commit duplicati e, in molti scenari in cui sarebbe possibile eseguire il cherry-pick, sono invece preferiti i merge tradizionali. Detto questo, git cherry-pick è uno strumento utile per alcuni scenari...

Collaborazione tra team


Spesso in un team ci sono singoli membri che lavorano allo o attorno allo stesso codice. Magari una nuova funzione del prodotto ha un componente backend e un componente frontend. Potrebbe esserci del codice condiviso tra due settori del prodotto. Magari lo sviluppatore di backend crea una struttura dati che dovrà utilizzare anche lo sviluppatore di frontend. Lo sviluppatore di frontend potrebbe usare git cherry-pick per scegliere il commit in cui è stata creata questa ipotetica struttura dati. Questa scelta gli consentirebbe di andare avanti nella propria parte del progetto.

Database
materiale correlato

Come spostare un repository Git completo

Logo di Bitbucket
Scopri la soluzione

Impara a utilizzare Git con Bitbucket Cloud

Correzioni rapide dei bug


Se viene rilevato un bug, è importante rilasciare una correzione per gli utenti finali il più rapidamente possibile. Come scenario di esempio, supponiamo che uno sviluppatore abbia iniziato a lavorare su una nuova funzione. Durante lo sviluppo di questa nuova funzione, identifica un bug preesistente. Lo sviluppatore crea un commit esplicito per correggere questo bug. È possibile eseguire il cherry-pick di questo nuovo commit di patch direttamente nel branch principale per correggere il bug prima che influisca su altri utenti.

Annullare le modifiche e ripristinare i commit persi


A volte un branch feature può diventare obsoleto e non essere sottoposto a merge nel branch main. A volte una richiesta di pull potrebbe essere chiusa senza alcun merge. Questi commit in Git non vengono mai persi e, tramite comandi come git log e git reflog, possono essere individuati e sottoposti a cherry-pick per ritornare in vita.

Come usare git cherry-pick


Per dimostrare come usare git cherry-pick, supponiamo di avere un repository con il seguente stato del branch:

    a - b - c - d   Main
         \
           e - f - g Feature

git cherry-pick è semplice da utilizzare e può essere eseguito come:

git cherry-pick commitSha

In questo esempio commitSha è un riferimento di commit. Puoi trovare un riferimento di commit utilizzando git log. In questo esempio, supponiamo di voler usare il commit `f` in main. Per prima cosa, ci assicuriamo di essere sul branch main.

git checkout main

Quindi, eseguiamo il cherry-pick con il seguente comando:

git cherry-pick f

Dopo l'esecuzione del comando, la cronologia di Git sarà simile a:

    a - b - c - d - f   Main
         \
           e - f - g Feature

Il commit f è stato selezionato correttamente nel branch principale

Esempi di git cherry-pick


È inoltre possibile inviare a git cherry pick alcune opzioni di esecuzione.

-edit

Se viene inviata l'opzione -edit, git richiederà un messaggio di commit prima di applicare l'operazione cherry-pick

--no-commit

L'opzione --no-commit eseguirà il cherry-pick, ma invece di creare un nuovo commit, sposterà il contenuto del commit di destinazione nella directory di lavoro del branch corrente.

--signoff

L'opzione --signoff aggiungerà una riga di firma 'signoff' alla fine del messaggio di commit di cherry-pick

Oltre a queste utili opzioni, git cherry-pick accetta anche diverse opzioni di strategie di merge. Scopri di più su queste opzioni nella documentazione sulle strategie di merge di git.

Inoltre, git cherry-pick accetta anche l'input delle opzioni per la risoluzione dei conflitti di merge, tra cui sono incluse le opzioni: --abort --continue e --quit. Queste opzioni sono descritte nei dettagli con riferimento a git merge e a git rebase.

Riepilogo


Il cherry-pick è un comando efficace e pratico, incredibilmente utile in alcuni scenari. Non deve essere utilizzato in modo improprio al posto di git merge o di git rebase. Il comando git log è necessario per trovare i commit da sottoporre a cherry-pick.


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Le persone collaborano utilizzando una parete piena di strumenti

Blog di Bitbucket

Illustrazione su Devops

Percorso di apprendimento DevOps

Funzione Demo Den per demo con esperti Atlassian

Come Bitbucket Cloud funziona con Atlassian Open DevOps

Iscriviti alla nostra newsletter DevOps

Thank you for signing up