Git Cherry Pick

git cherry-pick è un potente comando che permette ai commit Git arbitrari di essere prelevati per riferimento e aggiunti all’attuale HEAD di lavoro. Cherry picking è l’atto di prendere un commit da un ramo e applicarlo ad un altro. git cherry-pick può essere utile per annullare i cambiamenti. Per esempio, diciamo che un commit è accidentalmente fatto nel ramo sbagliato. Puoi passare al ramo corretto e prelevare il commit dove dovrebbe appartenere.

Quando usare git cherry pick

git cherry-pick è uno strumento utile ma non sempre una buona pratica. Cherry picking può causare commit duplicati e molti scenari in cui cherry picking funzionerebbe, sono invece preferite le fusioni tradizionali. Detto questo git cherry-pick è uno strumento utile per alcuni scenari…

Collaborazione di squadra.

Spesso una squadra si trova a lavorare con singoli membri o intorno allo stesso codice. Forse un nuovo prodotto ha un componente backend e uno frontend. Ci può essere del codice condiviso tra i due settori del prodotto. Forse lo sviluppatore backend crea una struttura di dati che anche il frontend dovrà utilizzare. Lo sviluppatore frontend potrebbe usare git cherry-pick per scegliere il commit in cui questa ipotetica struttura dati è stata creata. Questo prelievo permetterebbe allo sviluppatore frontend di continuare a progredire sul proprio lato del progetto.

Bug hotfixes

Quando viene scoperto un bug è importante fornire una correzione agli utenti finali il più velocemente possibile. Per uno scenario di esempio, diciamo che uno sviluppatore ha iniziato a lavorare su una nuova funzionalità. Durante lo sviluppo di questa nuova caratteristica identifica un bug preesistente. Lo sviluppatore crea un commit esplicito per correggere questo bug. Questo nuovo commit di patch può essere prelevato direttamente dal ramo master per correggere il bug prima che abbia effetti su altri utenti.

Annullamento dei cambiamenti e ripristino dei commit persi

A volte un ramo feature può diventare vecchio e non essere unito a master. A volte una richiesta di pull potrebbe essere chiusa senza essere fusa. Git non perde mai quei commit e attraverso comandi come git log e git reflog possono essere trovati e ripresi in vita.

Come usare git cherry pick

Per dimostrare come usare git cherry-pick assumiamo di avere un repository con il seguente stato del ramo:

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

git cherry-pick l’uso è semplice e può essere eseguito come:

git cherry-pick commitSha

In questo esempio commitSha è un riferimento di commit. Puoi trovare un riferimento di commit usando git log. In questo esempio abbiamo costruito diciamo che vogliamo usare il commit `f` in master. Prima ci assicuriamo che stiamo lavorando sul ramo master.

git checkout master

Poi eseguiamo il cherry-pick con il seguente comando:

git cherry-pick f

Una volta eseguita la nostra cronologia Git sarà simile a:

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

Il commit f è stato prelevato con successo nel ramo master

Esempi di git cherry pick

git cherry pick si possono anche passare alcune opzioni di esecuzione.

-edit

Passando l’opzione -edit git chiederà un messaggio di commit prima di applicare l’operazione di cherry-pick

--no-commit

L’opzione --no-commit eseguirà il cherry pick ma invece di fare un nuovo commit sposterà il contenuto del commit di destinazione nella directory di lavoro del ramo corrente.

--signoff

L’opzione --signoff aggiungerà una linea di firma ‘signoff’ alla fine del messaggio di commit del cherry-pick

In aggiunta a queste utili opzioni git cherry-pick accetta anche una varietà di opzioni di strategia di fusione. Scopri di più su queste opzioni nella documentazione di git merge strategies.

Inoltre, git cherry-pick accetta anche input di opzioni per la risoluzione dei conflitti di merge, questo include le opzioni: --abort --continue e --quit queste opzioni sono trattate più in profondità per quanto riguarda git merge e git rebase.

Riassunto

Il cherry picking è un comando potente e conveniente che è incredibilmente utile in alcuni scenari. Cherry picking non dovrebbe essere usato impropriamente al posto di git merge o git rebase. Il comando git log è necessario per aiutare a trovare i commit da prelevare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.