Oletame, et teil on Giti hoidla. Sa töötad selle kallal meister filiaal ja olete teinud mõned kohustused (A, B ja C) meister haru samuti.
Nüüd on teil äkki suurepärane idee. Nii et loote veel ühe haru newidea. Seejärel hakkasite tegema kohustusi (E, F ja G) seal.
Te tegite ka mõnda muudatust meister uuesti haru ja lisas uue kohustuse H.
Nüüd, kui teie uus idee on edukas, võiksite selle ühendada newidea haru meister haru. Oletame, et ühendasite selle. See loob uue kohustuse Mina nagu näete alloleval joonisel. Uus kohustus sisaldab kõike (kõik muudatused muudatustes E, F, ja G) haru newidea.
Oletame nüüd, et te ei soovi kõiki filiaali toiminguid liita newidea Euroopa meister haru. Sa tahad ainult ühendada muudatused (ainult diffi muudatused) pühendumises F Euroopa meister haru. Siin tuleb sisse git-kirsside valik. Git cherry pick võimaldab teil seda teha. Leiate lihtsalt kohustuse räsi, mille soovite kirsiks valida, ja rakendage see soovitud oksale. Väga lihtne.
Selles artiklis näitan teile, kuidas Gitis kirssi korjata. Alustame siis.
Git Cherry Picki töövoog:
Selles jaotises kavatsen seadistada Giti hoidla nii, et saaksite aru, miks kasutatakse git-kirssi valikut ja kuidas kirsi korjata Gitis.
Esmalt lähtestage tühi Giti hoidla kirsipuu-demo / järgnevalt:
$ git init kirss-pick-demo
Nüüd navigeerige hoidlasse järgmiselt:
$ cd cherry-pick-demo /
Nüüd looge a peamine.c järgmise sisuga fail:
Nüüd lisage fail lavastusalale järgmiselt:
$ git add .
Tehke muudatused järgmiselt:
$ git pühendus -m 'esialgne kohustus'
Nüüd looge a .gitignore järgmise sisuga fail:
Lisage fail lavastusalale.
$ git add .
Tehke muudatused:
$ git toime -m 'lisatud .gitignore fail '
Nagu näete, on mul nüüd 2 kohustust meister haru.
$ git log - oneline
Nüüd tahan lükata oma kohaliku Giti hoidla Giti kaugserverisse, et teised inimesed saaksid selles hoidlas töötada. GitHubi saate kasutada ka siin. Ma kasutan siin kohalikku SSH-serverit.
Niisiis, lisage Giti kaughoidla URL järgmiselt:
$ git pult lisage alguspunkt git @ git.linuxhint.com: ~ / cherry-pick-demo.git
Nüüd lükake meister hargneda Giti kaughoidlasse järgmiselt:
$ git push päritolumeister
Oletame nüüd bob soovib projekti kaasa aidata. Niisiis kloonis ta oma arvutis Giti hoidla.
$ git kloon git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject
Nüüd navigeerib Bob oma projektikataloogi.
$ cd myproject /
Tal on ka kaks kohustust, mille olen lisanud.
$ git log - oneline
Nüüd loob bob a test oma ideede proovimiseks.
$ git checkout -b test
Ta otsustab tagastusväärtust muuta konstandiga EXIT_SUCCESS alates stdlib raamatukogu.
Ta lisab lavastusalale muudatused.
$ git add .
Kinnitab muudatused.
$ git pühendus -m 'kasutas tagastusväärtusena 0 asemel EXIT_SUCCESS'
Nüüd otsustab ta funktsiooni kasutada printMessage () sõnumi printimiseks. Niisiis, ta kirjutab funktsiooni.
Ta paneb muudatused uuesti toime.
$ git add .$ git pühendada -m 'lisatud printMessage () funktsioon'
Seejärel kasutab bob programmis funktsiooni.
Ta paneb muudatused uuesti toime.
$ git add .$ git engel -m 'sõnumi printimiseks kasutas funktsiooni printMessage ()'
Nüüd on bobil järgmised toimingud test haru.
Nüüd lükkab bob testi haru Giti kaughoidlasse.
$ git push-päritolutest
Nüüd helistab Bob teile ja räägib teie tehtud vingetest muudatustest. Niisiis hankisite Giti kaughoidla muudatused oma kohalikku hoidlasse.
$ git tõmbamineNüüd näete uut haru päritolu / test.
Leidsite ka 3 uut kohustust, mille bob tegi.
$ git log - sisuline alguspunkt / test
Nüüd soovite teada, milliseid muudatusi bob tegi.
$ git log -p päritolu / test
Otsustate, et tagastusväärtust ei asendata väärtusega EXIT_SUCCESS nagu bob tegi.
Sulle meeldib mõte kasutada funktsiooni sõnumite printimiseks.
Sulle meeldib ka see pühendumine.
Niisiis, soovite liita 2 3-st bobi tehtud kohustusest. Kui olete harutesti ühendamiseks kasutanud git merge'i, rakendatakse kõiki kolme toimingut. Kuid git cherry pick funktsiooniga saate ühendada ainult teile meeldivad toimingud.
Pange tähele, et kui teete Gitis kirsside valimisel kohustusi, alustate alati kõige vanemast pühendumisest ja liigute järk-järgult uusima juurde.
Enne korjasin kirsiga peamine.c fail näeb välja järgmine.
Nüüd valime kirss kahest kohustusest vanima 9a4e532 järgmiselt:
$ git cherry-pick 9a4e532
Liitekonflikt! See võib juhtuda.
Nüüd avage peamine.c fail ja parandage ühendamise konflikt.
Lõplik fail peaks välja nägema järgmine.
Nüüd lisage muudatused lavastusalale.
$ git add.
Tehke muudatused järgmiselt:
$ git cherry-pick - jätkake
MÄRGE: Võite ka kasutada git pühenduma ka siin. See on sinu teha. ma eelistan git cherry-pick - jätkake kuna see kasutab automaatselt pühendumissõnumit, siis valin kirssi.
Nüüd tippige oma pühendumissõnum siia ja salvestage fail.
Tuleks lisada uus kohustus.
Nüüd vali kirss järgmine kohustus järgmiselt:
$ git cherry-pick 08ba5e7
Ühtegi konflikti pole. Suurepärane! Uus kohustus tuleks lisada automaatselt.
Nagu näete, saan täpselt seda, mida tahtsin. Ühendasin ainult vajalikud kohustused.
Niisiis valite Gitis kirsse. Täname selle artikli lugemise eest.