Git

Cseresznyeválasztás Gitben

Cseresznyeválasztás Gitben
A git cherry pick a Git egyesítési jellemzője. De van egy kis különbség a git cseresznye kiválasztásában és a git egyesítésében. A felhasználási eset is más. Először nézzük meg, hogyan működik a git merge, majd hasonlítsuk össze a git cherry pick-el. Így meg fogja érteni, hogy mikor kell használni a git merge és mikor a git cherry picket.

Tegyük fel, hogy van egy Git-tárod. Azon dolgozol fő- fiókot, és elvégeztél néhány kötelezettséget (A, B és C) a fő- ág is.

Most hirtelen nagyszerű ötlete támad. Tehát létrehoz egy másik ágat newidea. Aztán elkezdtél vállalni (E, F és G) ott.

Néhány módosítást is végrehajtott a fő- fióktelep ismét, és új kötelezettségvállalást tett H.

Most, ha új ötlete sikeres, akkor érdemes egyesíteni a newidea ága a fő- ág. Mondjuk, összevontad. Új kötelezettségvállalást hoz létre én amint az alábbi ábrán láthatja. Az új elkötelezettség mindent tartalmaz (a változtatások minden változása E, F, és G) az ág newidea.

Tegyük fel, hogy nem akarja egyesíteni a fióktelep összes végrehajtását newidea hoz fő- ág. Csak a változtatásokat (csak a diff változásokat) kívánja egyesíteni a véglegesítésben F hoz fő- ág. Itt jön be a git cseresznye. A Git cseresznye válogatás lehetővé teszi ezt. Csak megtalálja az elkötelezettség kivonatát, amelyet meggyre szeretne szedni, és alkalmazza azt a kívánt ágra. Nagyon egyszerű.

Ebben a cikkben megmutatom, hogyan kell cseresznyét választani a Git-ben. Tehát kezdjük.

Git Cherry Pick munkafolyamat:

Ebben a szakaszban egy Git-adattárat fogok felállítani oly módon, hogy megértse, miért használják a git cseresznye választást, és hogyan kell meggyet válogatni a Gitben.

Először inicializáljon egy üres Git-tárat cherry-pick-demo / alábbiak szerint:

$ git init cherry-pick-demo

Most keresse meg az adattárat az alábbiak szerint:

$ cd cherry-pick-demo /

Most hozzon létre egy fő-.c fájl a következő tartalommal:

Most adja hozzá a fájlt az átmeneti területhez az alábbiak szerint:

$ git add .

Most hajtsa végre a módosításokat az alábbiak szerint:

$ git elkötelezettség -m 'kezdeti elkötelezettség'

Most hozzon létre egy .gitignore fájl a következő tartalommal:

Adja hozzá a fájlt az átmeneti területhez.

$ git add .

Végezze el a módosításokat:

$ git kötelezettség -m 'hozzáadva .gitignore fájl '

Amint láthatja, most 2 elkötelezettségem van fő- ág.

$ git log - online

Most egy helyi Git-adattárat szeretnék egy távoli Git-kiszolgálóra tolni, hogy mások is dolgozhassanak ezen az adattáron. Itt is használhatja a GitHub-ot. Ehhez itt egy helyi SSH szervert fogok használni.

Tehát adjon hozzá egy távoli Git-adattár URL-t az alábbiak szerint:

$ git remote add origin git @ git.linuxhint.com: ~ / cherry-pick-demo.git

Most nyomja meg a fő- elágazás a távoli Git adattárhoz az alábbiak szerint:

$ git push origó mester

Most mondjuk bob hozzájárulni akar a projekthez. Tehát klónozta a Git adattárat a számítógépén.

$ git klón git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject

Most bob a projekt könyvtárába navigál.

$ cd myproject /

Ő is elkövette a 2 elkötelezettséget, amelyeket hozzáadtam.

$ git log - online

Most Bob létrehoz egy teszt fióktelepe, hogy kipróbálja ötleteit.

$ git checkout -b teszt

Úgy dönt, hogy a visszatérési értéket állandóval változtatja EXIT_SUCCESS tól stdlib könyvtár.

Hozzáteszi a változtatásokat az állomás területére.

$ git add .

Végrehajtja a változásokat.

$ git elkötelezettség -m '0 helyett EXIT_SUCCESS-t használt visszatérési értékként'

Most úgy dönt, hogy egy funkciót használ printMessage () az üzenet kinyomtatásához. Tehát írja a függvényt.

Újra elköveti a változásokat.

$ git add .
$ git kötelezettség -m 'printMessage () függvény hozzáadása'

Ezután bob a programban használja a függvényt.

Újra elköveti a változásokat.

$ git add .
$ git pühend -m 'az print kinyomtatására használt printMessage () függvényt'

Most bob a következő elkövetéseket hajtja végre a teszt ág.

Most Bob eltolja a tesztágat a Git távoli adattárba.

$ git push eredet teszt

Most Bob felhív téged, és elmondja a félelmetes változásokat. Tehát a Git távoli adattár módosításait a saját helyi adattárába kapta le.

$ git letöltés

Most új ágat lát eredet / teszt.

3 új elkötelezettséget is talált, amelyet bob végzett.

$ git log - on-line eredet / teszt

Most szeretné tudni, hogy milyen változtatásokat hajtott végre bob.

$ git log -p eredet / teszt

Úgy dönt, hogy a visszatérési értéket nem cseréli le EXIT_SUCCESS-re, mint Bob tette.

Tetszik az a funkció, hogy egy funkciót használjon az üzenetek nyomtatásához.

Tetszik ez az elkötelezettség is.

Tehát be akarja egyesíteni a bob által végzett 3 elkövetésből kettőt. Ha a git merge szolgáltatást használta az elágazás teszt egyesítéséhez, akkor mind a 3 végrehajtás végrehajtásra kerül. De a git cherry pick funkcióval csak azokat az elkötelezéseket egyesítheti, amelyek tetszenek.

Ne feledje, hogy amikor cseresznyeválogat a Git-ben, akkor mindig a legrégebbi elkötelezettséggel kezd, és apránként halad előre a legújabb felé.

Előtte cseresznyét szedtem, a fő-.c fájl a következőképpen néz ki.

Most válasszuk cseresznyét a két legrégebbi közül a 9a4e532 közül az alábbiak szerint:

$ git cherry-pick 9a4e532

Összeolvadó konfliktus! Ez megtörténhet.

Nyissa meg a fő-.c fájl és javítsa ki az egyesítési ütközést.

A végleges fájlnak a következőképpen kell kinéznie.

Most adja hozzá a változtatásokat az átmeneti területhez.

$ git add.

Most hajtsa végre a módosításokat az alábbiak szerint:

$ git cherry-pick - folytassa

JEGYZET: Használhatja is git elkövetni itt is. Tőled függ. inkább git cherry-pick -folytassa mivel automatikusan felhasználja az elkötelezettség üzenetét, amit cseresznye szedek.

Írja be ide a végrehajtási üzenetet, és mentse a fájlt.

Új kötelezettségvállalást kell hozzáadni.

Cseresznye válassza ki a következő elkötelezettséget az alábbiak szerint:

$ git cherry-pick 08ba5e7

Nincs összeolvadási konfliktus. Nagy! Új kötelezettségvállalást kell automatikusan hozzáadni.

Amint láthatja, pontosan azt kapom, amit szerettem volna. Csak összevontam azokat a kötelezettségeket, amelyekre szükségem volt.

Így válogathatsz meg Gitben. Köszönjük, hogy elolvasta ezt a cikket.

SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...