Come scegliere la ciliegia in git

Come scegliere la ciliegia in git
Git Cherry Pick è una caratteristica di unione di Git. Ma c'è una leggera differenza nella raccolta di ciliegie git e git. Inoltre, il caso d'uso è diverso. Vediamo come funziona prima Git Merge, quindi confrontalo con Git Cherry Pick. In questo modo, capirai quando usare Git Merge e quando usare Git Cherry Pick.

Diciamo, hai un repository git. Stai lavorando al maestro ramo e hai fatto qualche commit (A, B e C) sul maestro ramo anche.

Ora, all'improvviso hai una grande idea. Quindi, crei un altro ramo nuova idea. Quindi, hai iniziato a fare commit (E, f e g) Là.

Hai anche apportato alcune modifiche al maestro Branch di nuovo e ha aggiunto un nuovo commit H.

Ora, se la tua nuova idea è un successo, allora potresti voler unire il nuova idea ramo al maestro ramo. Diciamo, l'hai fuso. Creerà un nuovo commit IO Come puoi vedere nella figura seguente. Il nuovo commit conterrà tutto (tutti i cambiamenti negli commit E, F, E G) del ramo nuova idea.

Ora, diciamo, non vuoi unire tutti gli commit della filiale nuova idea al maestro ramo. Vuoi solo unire le modifiche (solo le modifiche diff) nel commit F al maestro ramo. Qui è dove entra in gioco Git Cherry. Git Cherry Pick ti consente di farlo. Trovi solo l'hash del commit che vuoi scegliere e applicarlo al ramo che desideri. Molto semplice.

In questo articolo, ti mostrerò come fare la scelta di ciliegia in git. Quindi iniziamo.

Git Cherry Pick Workflow:

In questa sezione, ho intenzione di impostare un repository git in un modo che capirai perché viene utilizzata la scelta di ciliegie e come la raccolta di ciliegie in git.

Innanzitutto, inizializza un repository GIT vuoto ciliegia-pick-demo/ come segue:

$ git init Cherry-pick-demo

Ora, vai al repository come segue:

$ CD CD Cherry-Pick-Demo/

Ora crea un file principale.C File con i seguenti contenuti:

Ora, aggiungi il file all'area di stadiazione come segue:

$ git aggiungi .

Ora, commetti i cambiamenti come segue:

$ git commit -m "commit iniziale"

Ora crea un file .gitignore File con il seguente contenuto:

Aggiungi il file all'area di stadiazione.

$ git aggiungi .

Commettere le modifiche:

$ git commit -m 'aggiunto .file gitignore '

Come puoi vedere, ora ho 2 commit nel mio maestro ramo.

$ git log --oneline

Ora, voglio spingere il mio repository git locale su un server GIT remoto in modo che altre persone possano lavorare su questo repository. Puoi usare anche github qui. Userò un server SSH locale per questo qui.

Quindi, aggiungi un URL del repository Git remoto come segue:

$ git remote aggiungi origine [email protected]: ~/Cherry-pick-demo.idiota

Ora, spingi il maestro ramo al repository Git remoto come segue:

$ git Push Origin Master

Ora, diciamo Bob vuole contribuire al progetto. Quindi, ha clonato il repository git sul suo computer.

$ git clone [email protected]: ~/Cherry-pick-demo.git myproject

Ora, Bob naviga nella sua directory del progetto.

$ cd myproject/

Ha anche i 2 commit che ho aggiunto.

$ git log --oneline

Ora Bob crea un file test ramo per provare le sue idee.

$ git checkout -b test

Decide di modificare il valore di ritorno con una costante Exit_success dal stdlib biblioteca.

Aggiunge le modifiche all'area di stadiazione.

$ git aggiungi .

Commette i cambiamenti.

$ git commit -m 'usa uset_success anziché 0 come valore di ritorno'

Ora, decide di usare una funzione PrintMessage () Per stampare il messaggio. Quindi, scrive la funzione.

Commette di nuovo i cambiamenti.

$ git aggiungi .
$ git commit -m 'aggiunta printMessage () funzione'

Quindi, Bob utilizza la funzione nel programma.

Commette di nuovo i cambiamenti.

$ git aggiungi .
$ git commit -m 'usata printMessage () funzione per stampare il messaggio'

Ora, Bob ha i seguenti commit in test ramo.

Ora, Bob spinge il ramo di prova nel repository remoto Git.

$ git Push Origin Test

Ora, Bob ti chiama e ti racconta le fantastiche modifiche che ha apportato. Quindi, hai recuperato le modifiche al repository remoto GIT nel proprio repository locale.

$ git fetch

Ora, vedi una nuova filiale Origine/Test.

Hai anche trovato 3 nuovi commit che Bob ha fatto.

$ git log -Origine/Test

Ora, vorresti sapere quali modifiche hanno apportato Bob.

$ git log -p origine/test

Decidi di non sostituire il valore di ritorno con exit_success come ha fatto Bob.

Ti piace il concetto di utilizzare una funzione per stampare i messaggi.

Ti piace anche questo commit.

Quindi, vuoi unire 2 su 3 commetti che Bob ha fatto. Se hai usato Git unire per unire il test della filiale, verrebbero applicati tutti e 3. Ma, con Git Cherry Pick, puoi solo unire gli commit che ti piacciono.

Nota che quando la scelta della ciliegia si impegna in git, inizi sempre con il più antico commit e vai avanti fino a poco a poco.

Prima ho scelto ciliegia, il principale.C Il file sembra segue.

Ora, prendiamo in giro la ciliegia il più antico dei 2 commit, 9a4e532 come segue:

$ Git Cherry-Pick 9a4e532

Un conflitto di unione! Questo può accadere.

Ora, apri il principale.C archiviare e correggere il conflitto di unione.

Il file finale dovrebbe apparire come segue.

Ora, aggiungi le modifiche all'area di stadiazione.

$ git aggiungi.

Ora, commetti i cambiamenti come segue:

$ git Cherry-Pick-Continua

NOTA: Puoi anche usare commit git Anche qui. Tocca a voi. preferisco Git Cherry -Pick -Continue Poiché utilizzerà automaticamente il messaggio di commit dal commit che sto raccogliendo.

Ora, digita il tuo messaggio di commit qui e salva il file.

Dovrebbe essere aggiunto un nuovo commit.

Ora, Cherry scegli il prossimo commit come segue:

$ Git Cherry-Pick 08Ba5e7

Nessun conflitto di unione. Grande! Un nuovo commit dovrebbe essere aggiunto automaticamente.

Come puoi vedere, ottengo esattamente quello che volevo. Ho solo unito gli impegni di cui avevo bisogno.

Quindi, è così che sceglierai in git. Grazie per aver letto questo articolo.