Idiota

Come scegliere Cherry Pick in Git

Come scegliere Cherry Pick in Git
git cherry pick è una funzionalità di unione di Git. Ma c'è una leggera differenza tra git cherry pick e git merge. Inoltre, il caso d'uso è diverso. Vediamo prima come funziona git merge, poi confrontiamolo con git cherry pick. In questo modo, capirai quando usare git merge e quando usare git cherry pick.

Diciamo che hai un repository Git. Stai lavorando al maestro branch e hai fatto alcuni commit (A, B e C) sul maestro anche ramo branch.

Ora, all'improvviso hai una grande idea. Quindi, crei un altro ramo nuova idea. Quindi, hai iniziato a fare commit (Mi, Fa e Sol) 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, potresti voler unire i nuova idea ramo per il maestro ramo. Diciamo che l'hai unito. Creerà un nuovo commit io come puoi vedere nella figura qui sotto. Il nuovo commit conterrà tutto (tutte le modifiche nei commit E, F, e G) del ramo nuova idea.

Ora, diciamo, non vuoi unire tutti i commit del ramo nuova idea al maestro ramo. Vuoi solo unire le modifiche (solo le modifiche diff) nel commit F al maestro ramo. È qui che entra in gioco git cherry pick. Git cherry pick ti permette di farlo. Basta trovare l'hash del commit che si desidera selezionare e applicarlo al ramo che si desidera. Molto semplice.

In questo articolo, ti mostrerò come scegliere la ciliegia in Git. Quindi iniziamo.

Flusso di lavoro Git Cherry Pick:

In questa sezione, configurerò un repository Git in un modo che capirai perché viene utilizzato git cherry pick e come cherry pick in Git.

Innanzitutto, inizializza un repository Git vuoto cherry-pick-demo/ come segue:

$ git init cherry-pick-demo

Ora, vai al repository come segue:

$ cd cherry-pick-demo/

Ora, crea un principale.c file con il seguente contenuto:

Ora aggiungi il file all'area di staging come segue:

$ git add .

Ora, esegui il commit delle modifiche come segue:

$ git commit -m 'commit iniziale'

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

Aggiungi il file all'area di staging.

$ git add .

Conferma le modifiche:

$ git commit -m 'aggiunto .gitignore file'

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

$ git log --oneline

Ora voglio inviare il mio repository Git locale a un server Git remoto in modo che altre persone possano lavorare su questo repository. Puoi usare GitHub anche qui. Userò un server SSH locale per questo qui dentro.

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

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

Ora premi il maestro ramo al repository Git remoto come segue:

$ git push origine 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 il mio progetto

Ora, bob naviga nella sua directory del progetto.

$ cd mioprogetto/

Ha anche i 2 commit che ho aggiunto.

$ git log --oneline

Ora, bob crea un test ramo per provare le sue idee.

$ git checkout -b test

Decide di cambiare il valore di ritorno con una costante EXIT_SUCCESS dal stdlib biblioteca.

Aggiunge le modifiche all'area di allestimento.

$ git add .

Conferma le modifiche.

$ git commit -m 'usato EXIT_SUCCESS invece di 0 come valore restituito'

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

Esegue di nuovo le modifiche.

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

Quindi, bob usa la funzione nel programma.

Esegue di nuovo le modifiche.

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

Ora, bob ha i seguenti commit nel test ramo.

Ora, bob invia il ramo di test al repository remoto di Git.

$ git push origine test

Ora Bob ti chiama e ti parla dei fantastici cambiamenti che ha fatto. Quindi, hai recuperato le modifiche al repository remoto Git nel tuo repository locale.

$ git fetch

Ora vedi un nuovo ramo origine/test.

Hai anche trovato 3 nuovi commit fatti da bob.

$ git log --oneline origine/test

Ora vorresti sapere quali modifiche ha apportato Bob.

$ git log -p origine/test

Decidi di non sostituire il valore restituito con EXIT_SUCCESS come ha fatto bob.

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

Ti piace anche questo commit.

Quindi, vuoi unire 2 dei 3 commit bob realizzati. Se hai usato git merge per unire il test del ramo, verranno applicati tutti e 3 i commit. Ma, con la funzione git cherry pick, puoi unire solo i commit che ti piacciono.

Nota che quando scegli i commit in Git, inizi sempre con il commit più vecchio e vai avanti al più recente a poco a poco.

Prima, ho scelto la ciliegia, il principale.c il file ha il seguente aspetto.

Ora, scegliamo il più vecchio dei 2 commit, 9a4e532 come segue:

$ git cherry-pick 9a4e532

Un conflitto di fusione! Questo può succedere.

Ora apri il principale.c file e risolvi il conflitto di unione.

Il file finale dovrebbe essere il seguente.

Ora aggiungi le modifiche all'area di staging.

$ git add.

Ora, esegui il commit delle modifiche come segue:

$ git cherry-pick --continua

NOTA: Puoi anche usare git commit anche qui. Tocca a voi. preferisco git cherry-pick -continua poiché utilizzerà automaticamente il messaggio di commit dal commit che sto raccogliendo con la ciliegia.

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

Dovrebbe essere aggiunto un nuovo commit.

Ora, 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, ho ottenuto esattamente quello che volevo. Ho unito solo i commit di cui avevo bisogno.

Quindi, è così che scegli la ciliegia in Git. Grazie per aver letto questo articolo.

Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...
Come aumentare gli FPS in Linux?
FPS sta per Fotogrammi al secondo. Il compito dell'FPS è misurare il frame rate nelle riproduzioni video o nelle prestazioni di gioco game. In parole ...
I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...