Tarkime, jūs turite „Git“ saugyklą. Jūs dirbate meistras filialas ir jūs padarėte keletą įsipareigojimų (A, B ir C) ant meistras filialas taip pat.
Dabar staiga jums kyla puiki idėja. Taigi, jūs sukuriate kitą šaką newidea. Tada pradėjote įsipareigoti (E, F ir G) ten.
Jūs taip pat atlikote keletą pakeitimų meistras vėl filialas ir pridėjo naują įsipareigojimą H.
Dabar, jei jūsų naujoji idėja yra sėkminga, galbūt norėsite ją sujungti newidea atšaka į meistras atšaka. Tarkime, jūs jį sujungėte. Tai sukurs naują įsipareigojimą Aš kaip matote paveikslėlyje žemiau. Naujame įsipareigojime bus viskas (visi įsipareigojimų pakeitimai E, F, ir G) filialo newidea.
Tarkime, jūs nenorite sujungti visų filialo įsipareigojimų newidea į meistras atšaka. Norite tik sujungti pakeitimus (tik pokyčių skirtumus) F į meistras atšaka. Čia atsiranda git vyšnių pasirinkimas. „Git“ vyšnių pasirinkimas leidžia tai padaryti. Jūs tiesiog radote įsipareigojimo maišos, kurią norite pasirinkti vyšnia, ir pritaikykite ją norimai šakai. Labai paprasta.
Šiame straipsnyje aš jums parodysiu, kaip pasirinkti vyšnias Git. Taigi, pradėkime.
„Git Cherry Pick“ darbo eiga:
Šiame skyriuje aš ketinu įsteigti „Git“ saugyklą taip, kad suprastumėte, kodėl naudojamas „git“ vyšnių rinkimas ir kaip vyšnių pasirinkimas „Git“.
Pirmiausia inicializuokite tuščią „Git“ saugyklą vyšnių rinkimo demonstracija / taip:
$ git init vyšnių rinkimo demonstracinė versija
Dabar eikite į saugyklą taip:
$ cd cherry-pick-demo /
Dabar sukurkite pagrindinis.c failas su tokiu turiniu:
Dabar pridėkite failą prie sustojimo srities taip:
$ git pridėti .
Dabar atlikite pakeitimus taip:
$ git įsipareigojimas -m 'pradinis įsipareigojimas'
Dabar sukurkite .gitignore failas su tokiu turiniu:
Pridėkite failą prie sustojimo srities.
$ git pridėti .
Atlikite pakeitimus:
Pridėta $ git įsipareigoti -m ' .„gitignore“ failas “
Kaip matote, dabar aš turiu 2 įsipareigojimus meistras atšaka.
$ git žurnalas - tiesioginis
Dabar noriu perkelti savo vietinę „Git“ saugyklą į nuotolinį „Git“ serverį, kad kiti žmonės galėtų dirbti šioje saugykloje. Čia taip pat galite naudoti „GitHub“. Tam naudosiu vietinį SSH serverį.
Taigi pridėkite nuotolinio „Git“ saugyklos URL taip:
$ git nuotolinis pridėkite kilmę git @ git.linuxhint.com: ~ / cherry-pick-demo.git
Dabar stumkite meistras išsišakokite į nuotolinę „Git“ saugyklą taip:
$ git push kilmės meistras
Tarkime, dabar Bobas nori prisidėti prie projekto. Taigi, jis klonavo „Git“ saugyklą savo kompiuteryje.
$ git klonas git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject
Dabar Bobas pereina į savo projektų katalogą.
$ cd myproject /
Jis taip pat turi du mano pridėtus įsipareigojimus.
$ git žurnalas - tiesioginis
Dabar bobas sukuria testas filialas išbandyti savo idėjas.
$ git patikra -b testas
Jis nusprendžia grąžinimo vertę pakeisti konstanta EXIT_SUCCESS nuo stdlib biblioteka.
Jis prideda pokyčius į pastatymo vietą.
$ git pridėti .
Įvykdo pakeitimus.
$ git įsipareigoti -m 'grąžinimo verte vietoj 0 naudojo EXIT_SUCCESS'
Dabar jis nusprendžia naudoti funkciją printMessage () kad išspausdintumėte pranešimą. Taigi, jis rašo funkciją.
Jis vėl vykdo pokyčius.
$ git pridėti .$ git įsipareigoti -m 'pridėta funkcija printMessage ()'
Tada bobas naudoja programos funkciją.
Jis vėl vykdo pokyčius.
$ git pridėti .$ git įsipareigoti -m 'naudojo funkciją printMessage () laiškui spausdinti'
Dabar bobas turi šiuos įsipareigojimus testas atšaka.
Dabar bobas bandymo šaką stumia į nuotolinę „Git“ saugyklą.
$ git push kilmės testas
Dabar Bobas jums paskambina ir pasakoja apie nuostabius jo atliktus pokyčius. Taigi, jūs gavote nuotolinės „Git“ saugyklos pakeitimus į savo vietinę saugyklą.
$ git atneštiDabar matote naują filialą kilmė / testas.
Jūs taip pat radote 3 naujus įsipareigojimus, kuriuos padarė bobas.
$ git log - tiesioginė kilmė / testas
Dabar norėtumėte sužinoti, kokius pakeitimus padarė bobas.
$ git log -p kilmė / testas
Nusprendėte nepakeisti grąžinimo vertės į EXIT_SUCCESS, kaip tai padarė Bobas.
Jums patinka idėja naudoti funkciją pranešimams spausdinti.
Jums taip pat patinka šis įsipareigojimas.
Taigi, jūs norite sujungti 2 iš 3 padarytų bobų įsipareigojimų. Jei naudojote „git merge“, kad sujungtumėte filialo testą, būtų taikomi visi 3 įsipareigojimai. Tačiau naudodami „git cherry pick“ funkciją galite sujungti tik jums patinkančius įsipareigojimus.
Atkreipkite dėmesį, kad pasirinkdami vyšnias „Git“, visada pradedate nuo seniausio įsipareigojimo ir po truputį einate į naujausią.
Anksčiau aš vyšnią rinkau pagrindinis.c failas atrodo taip.
Dabar pažiūrėkime, kaip vyšnios pasirinkti seniausią iš 2 įsipareigojimų - 9a4e532:
$ git vyšnių rinkimas 9a4e532
Susiliejimo konfliktas! Taip gali atsitikti.
Dabar atidarykite pagrindinis.c failą ir išspręsti susijungimo konfliktą.
Galutinė byla turėtų atrodyti taip.
Dabar pridėkite pakeitimus į sustojimo sritį.
$ git pridėti.
Dabar atlikite pakeitimus taip:
„$ git cherry-pick“ - tęskite
PASTABA: Taip pat galite naudoti git įsipareigoti čia pat. Viskas priklauso nuo tavęs. Man labiau patinka git cherry-pick -tęsti nes jis automatiškai naudos įsipareigojimo pranešimą iš įsipareigojimo, aš renkuosi vyšnias.
Dabar įveskite savo įsipareigojimo pranešimą čia ir išsaugokite failą.
Reikėtų pridėti naują įsipareigojimą.
Dabar vyšnia pasirinkite kitą įsipareigojimą taip:
$ git vyšnių rinkimas 08ba5e7
Jokio susijungimo konflikto. Puiku! Naujas įsipareigojimas turėtų būti pridėtas automatiškai.
Kaip matote, gaunu būtent tai, ko norėjau. Sujungiau tik man reikalingus įsipareigojimus.
Taigi, taip jūs renkatės vyšnias Git. Dėkojame, kad perskaitėte šį straipsnį.