Cosa fa Git Cherry Pick e quando dovrei usarlo?

Contenuti

Logo Git

git cherry-pick è uno strumento semplice ma potente che ti consente di trasferire commit selettivi da un ramo all'altro. Puoi usarlo quando non vuoi unire un intero ramo nel master, ma vorresti comunque includere le modifiche da un ramo di funzione.

Che cos'è Git Cherry Pick e come funziona?

Vai in alto, i commit sono le unità che tengono traccia delle modifiche nel tempo. Ogni commit può rappresentare una correzione di bug, una nuova funzionalità o parte di una soluzione più ampia. Puoi pensare ai commit archiviati come a un elenco collegato che punta indietro nel tempo; ogni volta che cambi la TESTA del tuo ramo, Git ricostruisce i file nella tua directory locale tenendo conto di tutti i commit che tornano all'inizio.

Questa è una semplificazione, in ogni caso, e Git tecnicamente non memorizza i commit come semplici elenchi di modifiche, usa blob basati su file, ma il principio è lo stesso.

Le cose si complicano quando vengono coinvolte le filiali. Spesso, lavorare su un ruolo richiede diversi giorni o settimane. Invece di rovinare il repository principale, passare a un ramo di funzionalità separato, e quindi il codice viene rivisto e unito di nuovo. L'unione è semplicemente ramificare questa cronologia di commit in modo che l'intero ramo delle funzionalità sia incluso quando Git fa il suo lavoro.

Nonostante questo, E se volessi unire alcune cose?, ma non vuoi che l'intero ramo sia ancora incluso? Non puoi fare git merge poi.

Qui è dove git cherry-pick diventa utile. Fa quello che suggerisce il nome: prende un singolo commit dal ramo delle funzionalità, lo seleziona singolarmente e lo applica al ramo master, o viceversa. Questo copia la conferma, quindi c'è un nuovo commit nel ramo di destinazione.

Si prega di notare che non ce n'è uno “linea” real che collega la nuova conferma nel ramo master con la conferma precedente. La nuova conferma accuratamente selezionata creata nel master non fa affatto riferimento alla conferma dell'origine, la conferma viene semplicemente copiata. Git se ne occuperà quando fonderai di nuovo i rami, perché i commit sembrano copie l'uno dell'altro.

Infatti, la conferma è “Trasferimenti” alla nuova filiale, anche se si dovrebbe prestare attenzione che la conferma di cui sopra vale ancora per il ramo caratteristiche. Nonostante questo, non vuoi invertire la conferma dell'origine, poiché ciò causerà problemi durante la fusione successiva.

Perché Cherry Pick??

Ci sono alcuni casi d'uso per questo. Forse stai lavorando a una funzione che non è pronta per il lancio, ma hai corretto un bug nel ramo della funzione che vorresti includere nella tua versione di rilascio settimanale. È possibile utilizzare la selezione selettiva per copiare la correzione di bug su Master da implementare in precedenza.

O forse hai più filiali per la produzione e lo sviluppo, e vorrei copiare un bug fix urgente dalla produzione allo sviluppo. Anche la scelta della ciliegia può farlo.

Oppure è possibile che tu abbia commesso anche accidentalmente il ramo sbagliato. Puoi usare git cherry-pick per copiarlo a destra, poi git reset per annullare quella conferma (finché è nella TESTA del ramo).

Usando Git Cherry Pick

Una volta capito cosa stai facendo, git cherry-pick è abbastanza semplice da usare.

Il modo più semplice per visualizzare la cronologia dei commit di Git sulla riga di comando è con il seguente comando, che mostra tutti i commit ma con una cronologia di fork e merge, che è fondamentale per usare il cherry-pick:

git log --pretty=formato:"%h %s" --grafico

Dopo, puoi semplicemente copiare l'hash SHA1 dal commit ed eseguire il cherry pick:

git cherry-pick 1da76d3

Nota che puoi anche scegliere più conferme contemporaneamente, basta passare più hash.

git cherry-pick ha alcune opzioni utili:

  • --no-commit basta applicare le modifiche alla tua directory. Dovrai preparare e confermare manualmente.
  • --edit ti permetterà di modificare il messaggio di conferma.
  • -x aggiungerà un messaggio che dice “cherry pick da commit: …”

Certo, se stai usando un client Git basato su GUI come Forchetta oh GitCrack, che consigliamo vivamente, puoi fare clic con il tasto destro del mouse sull'impegno e selezionare selezionalo:

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.