Git

Kako odabrati trešnju u Gitu

Kako odabrati trešnju u Gitu
git cherry pick je značajka spajanja Gita. Ali postoji mala razlika u git cherry pick i git merge. Također, slučaj upotrebe je drugačiji. Pogledajmo kako prvo radi git merge, a zatim ga usporedimo s git cherry pickom. Na taj ćete način razumjeti kada koristiti git merge, a kada git cherry pick.

Recimo, imate Git spremište. Radite na ovladati; majstorski i napravili ste nekoliko obveza (A, B i C) na ovladati; majstorski grana također.

Sad odjednom imate sjajnu ideju. Dakle, stvorite još jednu granu newidea. Zatim ste počeli praviti obveze (E, F i G) tamo.

Također ste unijeli neke promjene u ovladati; majstorski ponovno podružnica i dodao novi predati H.

Ako je vaša nova ideja uspješna, možda biste željeli spojiti newidea grana do ovladati; majstorski podružnica. Recimo, spojili ste ga. Stvorit će novo urezivanje Ja kao što možete vidjeti na donjoj slici. Novo urezivanje sadržavat će sve (sve promjene u urezivanjima E, F, i G) podružnice newidea.

Recimo sada, ne želite spojiti sve predmete ogranka newidea prema ovladati; majstorski podružnica. Želite samo spojiti promjene (mijenjaju se samo razlike) u urezivanju F prema ovladati; majstorski podružnica. Tu dolazi git cherry pick. Git cherry pick to vam omogućuje. Jednostavno pronađete raspršenu pohranu koju želite ubrati i primijenite je na željenu granu. Jako jednostavno.

U ovom članku pokazat ću vam kako brati trešnju u Gitu. Pa, krenimo.

Tok rada Git Cherry Pick:

U ovom odjeljku postavit ću Git spremište na način da ćete razumjeti zašto se koristi git cherry pick i kako odabrati cherry pick u Git-u.

Prvo inicijalizirajte prazno Git spremište cherry-pick-demo / kako slijedi:

$ git init cherry-pick-demo

Sada dođite do spremišta na sljedeći način:

$ cd cherry-pick-demo /

Sada stvorite a glavni.c datoteka sa sljedećim sadržajem:

Sada dodajte datoteku u scensko područje na sljedeći način:

$ git dodaj .

Sada izvršite promjene na sljedeći način:

$ git commit -m 'početno predavanje'

Sada stvorite a .gitignore datoteka sljedećeg sadržaja:

Dodajte datoteku u mjesto za postavljanje.

$ git dodaj .

Obvežite promjene:

$ git commit -m 'dodano .gitignore datoteka '

Kao što vidite, sada imam 2 obveze u svom ovladati; majstorski podružnica.

$ git log --oneline

Sada želim gurnuti svoje lokalno Git spremište na udaljeni Git poslužitelj kako bi drugi ljudi mogli raditi na ovom spremištu. GitHub možete koristiti i ovdje. Za to ću ovdje koristiti lokalni SSH poslužitelj.

Dakle, dodajte udaljeni URL spremišta Git na sljedeći način:

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

Sada pritisnite ovladati; majstorski grana na udaljeno spremište Git kako slijedi:

$ git push master master

Sad, recimo bob želi doprinijeti projektu. Dakle, klonirao je Git spremište na svom računalu.

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

Sada, bob prelazi u njegov direktorij projekata.

$ cd mojprojekt /

Ima i 2 obveze koje sam dodao.

$ git log --oneline

Sada bob stvara a test ogranak isprobati njegove ideje.

$ git checkout -b test

Odlučuje promijeniti povratnu vrijednost konstantom EXIT_USCESSESS od stdlib knjižnica.

Dodaje promjene na scensko područje.

$ git dodaj .

Obavlja promjene.

$ git commit -m 'koristio je EXIT_SUCCESS umjesto 0 kao povratnu vrijednost'

Sada je odlučio koristiti funkciju printMessage () za ispis poruke. Dakle, on piše funkciju.

Ponovno uvodi promjene.

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

Zatim, bob koristi funkciju u programu.

Ponovno uvodi promjene.

$ git dodaj .
$ git commit -m 'koristio je funkciju printMessage () za ispis poruke'

Sada, bob ima sljedeće ureze u test podružnica.

Sada, bob gura testnu granu u udaljeno spremište Git.

$ git push test podrijetla

Sad vas Bob zove i govori vam o nevjerojatnim promjenama koje je napravio. Dakle, dohvatili ste promjene u udaljenom spremištu Git u svoje lokalno spremište.

$ git dohvati

Sad vidite novu granu podrijetlo / test.

Pronašli ste i 3 nova obveza koja je bob napravio.

$ git log --oneline ishodište / test

Sada biste željeli znati koje je promjene napravio bob.

$ git log -p ishodište / test

Odlučili ste ne zamijeniti povratnu vrijednost s EXIT_SUCCESS kao što je to učinio bob.

Sviđa vam se koncept upotrebe funkcije za ispis poruka.

Sviđa vam se i ova obveza.

Dakle, želite spojiti 2 od 3 izvršena boba. Ako ste koristili git merge za spajanje testa grane, tada će se primijeniti sva 3 predavanja. Ali, sa značajkom git cherry pick, možete spajati samo obveze koje želite.

Imajte na umu da kada u Git-u počinite s odabirom trešanja, uvijek započinjete s najstarijim urezivanjem i pomalo prelazite naprijed do najnovijeg.

Prije sam brala trešnju, glavni.c datoteka izgleda kako slijedi.

Sada, hajde da odaberemo najstariji od 2 urezivanja, 9a4e532, kako slijedi:

$ git cherry-pick 9a4e532

Sukob spajanja! To se može dogoditi.

Sada otvorite glavni.c datoteku i riješite sukob spajanja.

Konačna datoteka trebala bi izgledati kako slijedi.

Sada dodajte promjene u scensko područje.

$ git dodaj.

Sada izvršite promjene na sljedeći način:

$ git cherry-pick --nastavite

BILJEŠKA: Također možete koristiti git počiniti i ovdje. Na tebi je. preferiram git cherry-pick -nastaviti jer će automatski koristiti poruku urezivanja iz urezivanja Ja berem trešnju.

Sada ovdje upišite svoju poruku predavanja i spremite datoteku.

Treba dodati novi predaj.

Sada, cherry odaberite sljedeći komitet na sljedeći način:

$ git cherry-pick 08ba5e7

Nema sukoba spajanja. Sjajno! Novo urezivanje treba dodati automatski.

Kao što vidite, dobivam točno ono što sam želio. Spajao sam samo obveze koje su mi trebale.

Dakle, tako se bere višnja u Gitu. Hvala što ste pročitali ovaj članak.

SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...
Vodič za bitku za Wesnoth
Bitka za Wesnoth jedna je od najpopularnijih strateških igara otvorenog koda koje trenutno možete igrati. Ne samo da se ova igra razvija već jako dugo...
0 A.D. Vodič
Od mnogih strateških igara tamo, 0 A.D. uspijeva se istaknuti kao sveobuhvatan naslov i vrlo duboka, taktička igra unatoč tome što je otvoren izvor. R...