Git

Kako izbrati češnjo v Gitu

Kako izbrati češnjo v Gitu
git cherry pick je združitev Gita. Obstaja pa majhna razlika med git cherry pick in git merge. Tudi primer uporabe je drugačen. Poglejmo, kako najprej deluje git merge, nato ga primerjajmo z git cherry pick. Tako boste razumeli, kdaj uporabiti git merge in kdaj git cherry pick.

Recimo, da imate skladišče Git. Delate na mojster in ste naredili nekaj prevzemov (A, B in C) na mojster podružnica tudi.

Zdaj pa naenkrat imate odlično idejo. Torej, ustvarite novo vejo newidea. Nato ste začeli urejati (E, F in G) tam.

Prav tako ste nekaj sprememb spremenili mojster znova podružnico in dodal novo objavo H.

Če je vaša nova ideja uspešna, boste morda želeli združiti newidea podružnica do mojster podružnica. Recimo, da ste ga združili. Ustvaril bo nov prevzem jaz kot lahko vidite na spodnji sliki. Nova odobritev bo vsebovala vse (vse spremembe v zavezah E, F, in G) podružnice newidea.

Zdaj, recimo, ne želite združiti vseh predaj podružnice newidea do mojster podružnica. Spremembe želite združiti (spremenijo se samo razlike) v objavi F do mojster podružnica. Tukaj pride git cherry pick. Git cherry pick vam to omogoča. Samo najdete zgoščeno objavo, ki jo želite pobrati, in jo uporabite za želeno vejo. Zelo preprosto.

V tem članku vam bom pokazal, kako nabirati češnje v Gitu. Torej, začnimo.

Potek dela Git Cherry Pick:

V tem poglavju bom vzpostavil repozitorij Git na način, da boste razumeli, zakaj se uporablja git cherry pick in kako češen pick v Git.

Najprej inicializirajte prazno shrambo Git demo češnja-pick / kot sledi:

$ git init cherry-pick-demo

Zdaj se pomaknite do skladišča, kot sledi:

$ cd češnja-pick-demo /

Zdaj ustvarite glavni.c datoteka z naslednjo vsebino:

Zdaj dodajte datoteko v uprizoritveno območje, kot sledi:

$ git add .

Zdaj spremembe zavežite na naslednji način:

$ git commit -m 'začetna odobritev'

Zdaj ustvarite .gitignore datoteka z naslednjo vsebino:

Datoteko dodajte na odrsko območje.

$ git add .

Zavežite spremembe:

$ git commit -m 'dodan .gitignore datoteka '

Kot lahko vidite, imam zdaj v svoji mojster podružnica.

$ git log --oneline

Zdaj želim potisniti svoj lokalni repozitorij Git na oddaljeni strežnik Git, da bodo lahko drugi ljudje delali na njem. GitHub lahko uporabite tudi tukaj. Za to bom tukaj uporabil lokalni SSH strežnik.

Torej dodajte oddaljeni URL repozitorija Git, kot sledi:

$ git remote dodaj izvor git @ git.linuxhint.com: ~ / cherry-pick-demo.git

Zdaj pa potisnite mojster podružnico do oddaljenega repozitorija Git, kot sledi:

$ git push izvorni mojster

Zdaj pa recimo bob želi prispevati k projektu. Torej je na svojem računalniku kloniral skladišče Git.

$ git klon git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject

Zdaj se bob pomakne do imenika njegovega projekta.

$ cd myproject /

Ima tudi 2 zaveze, ki sem jih dodal.

$ git log --oneline

Zdaj bob ustvari preskus podružnico, da preizkusi njegove ideje.

$ git checkout -b test

Odloči se, da bo vrnilno vrednost spremenil s konstanto EXIT_SUCCESS Iz stdlib knjižnica.

Spremembe doda na uprizoritveno območje.

$ git add .

Zavezuje spremembe.

$ git commit -m 'je kot vrnjeno vrednost uporabil EXIT_SUCCESS namesto 0'

Zdaj se je odločil za uporabo funkcije printMessage () da natisnete sporočilo. Torej, napiše funkcijo.

Ponovno izvede spremembe.

$ git add .
$ git commit -m 'dodana funkcija printMessage ()'

Nato bob uporabi funkcijo v programu.

Ponovno izvede spremembe.

$ git add .
$ git commit -m 'uporabil funkcijo printMessage () za tiskanje sporočila'

Zdaj ima bob naslednje datoteke v preskus podružnica.

Zdaj bob potisne preskusno vejo do oddaljenega repozitorija Git.

$ git push test testa

Zdaj vas bob pokliče in vam pove o izjemnih spremembah, ki jih je naredil. Torej, spremembe ste odstranili v oddaljeno repozitorij Git v svoje lokalno repozitorij.

$ git fetch

Zdaj vidite novo vejo izvor / test.

Našli ste tudi 3 nove zaveze, ki jih je naredil bob.

$ git log --oneline izvor / test

Zdaj vas zanima, kakšne spremembe je naredil bob.

$ git log -p izvor / test

Odločili ste se, da ne boste zamenjali vrnjene vrednosti z EXIT_SUCCESS, kot je to storil bob.

Všeč vam je koncept uporabe funkcije za tiskanje sporočil.

Všeč vam je tudi ta obveznost.

Torej, želite združiti 2 od treh narejenih bobov. Če ste za spajanje preizkusa vej uporabili git merge, bodo uporabljeni vsi 3 predpisi. Toda s funkcijo git cherry pick lahko združite samo zaveze, ki so vam všeč.

Upoštevajte, da ko v Gitu opravite zaveze za nabiranje češenj, vedno začnete z najstarejšim prevzemom in se premaknete naprej do najnovejšega.

Prej sem nabiral češnje, glavni.c datoteka izgleda takole.

Zdaj pa izberemo najstarejšega izmed 2 prevzemov, 9a4e532, kot sledi:

$ git cherry-pick 9a4e532

Konflikt združitve! To se lahko zgodi.

Zdaj odprite glavni.c datoteko in odpravi spor med spoji.

Končna datoteka naj bo videti takole.

Zdaj dodajte spremembe na odrsko območje.

$ git add.

Zdaj spremembe zavežite na naslednji način:

$ git cherry-pick --nastavi

OPOMBA: Lahko tudi uporabite git commit tudi tukaj. Odvisno je od tebe. raje bi git cherry-pick -nastavi saj bo samodejno uporabil sporočilo o prevzemu iz prevoda Jaz nabiram češnje.

Zdaj vnesite svoje sporočilo o prevzemu in shranite datoteko.

Dodati je treba novo obveznost.

Zdaj češnja izbere naslednji prevzem, kot sledi:

$ git cherry-pick 08ba5e7

Brez spoja med spajanjem. Super! Novo objavo je treba dodati samodejno.

Kot vidite, dobim točno tisto, kar sem hotel. Združila sem samo zaveze, ki sem jih potrebovala.

Torej, tako si nabiral češnje v Gitu. Hvala, ker ste prebrali ta članek.

Najboljše aplikacije za preslikavo gamepadov za Linux
Če želite igre na Linuxu igrati z igralno ploščico namesto s tipičnim sistemom za vnos tipkovnice in miške, je za vas na voljo nekaj uporabnih aplikac...
Uporabna orodja za igralce Linux
Če radi igrate igre na Linuxu, obstaja verjetnost, da ste za izboljšanje igralne izkušnje uporabljali aplikacije in pripomočke, kot so Wine, Lutris in...
HD Remastered Games za Linux, ki prej še niso izdale Linuxa
Mnogi razvijalci iger in založniki pripravijo HD remaster starih iger, da podaljšajo življenjsko dobo franšize, zato oboževalci zahtevajo združljivost...