Cherry-pick Git illo

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.

Correzioni rapide dei bug

When a bug is discovered it is important to deliver a fix to end users as quickly as possible. For an example scenario,say a developer has started work on a new feature. During that new feature development they identify a pre-existing bug. The developer creates an explicit commit patching this bug. This new patch commit can be cherry-picked directly to the main branch to fix the bug before it effects more users.

Annullare le modifiche e ripristinare i commit persi

Sometimes a feature branch may go stale and not get merged into main. Sometimes a pull request might get closed without merging. Git never loses those commits and through commands like git log and git reflog they can be found and cherry picked back to life.

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 this example commitSha is a commit reference. You can find a commit reference by using git log. In this example we have constructed lets say we wanted to use commit `f` in main. First we ensure that we are working on the main branch.

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

The f commit has been successfully picked into the main branch

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.