git cherry-pick
egy hatékony parancs, amely lehetővé teszi tetszőleges Git commitok hivatkozással történő kiválasztását és hozzáadását az aktuális HEAD munkamenethez. A Cherry picking egy commit kiválasztása egy ágból, és egy másik ághoz való hozzáadása. A git cherry-pick
hasznos lehet a változtatások visszavonásához. Például mondjuk, hogy egy commit véletlenül rossz ágba kerül. Átkapcsolhatsz a helyes ágra, és a cseresznyepiszkálással visszaviheted a commitot oda, ahová tartoznia kellene.
Mikor használd a git cseresznyepiszkálást
git cherry-pick
hasznos eszköz, de nem mindig a legjobb gyakorlat. A cseresznyézés duplikált commitokat okozhat, és sok olyan forgatókönyvben, ahol a cseresznyézés működne, a hagyományos egyesítéseket kell helyette előnyben részesíteni. Ezzel együtt a git cherry-pick
hasznos eszköz néhány forgatókönyvhöz…
Csapat együttműködése.
Gyakran előfordul, hogy egy csapat egyes tagjai ugyanazon a kódon vagy annak környékén dolgoznak. Talán egy új termékfunkciónak van egy backend és egy frontend komponense. Lehet, hogy van némi közös kód a két termékszektor között. Lehet, hogy a backend fejlesztő létrehoz egy adatstruktúrát, amelyet a frontendnek is használnia kell. A frontend-fejlesztő a git cherry-pick
segítségével kiválaszthatja azt a commitot, amelyben ez a feltételezett adatstruktúra létrejött. Ez a választás lehetővé tenné a frontend-fejlesztő számára, hogy a projekt saját oldalán folytassa az előrehaladást.
Hibajavítások
Amikor egy hibát felfedeznek, fontos, hogy a lehető leggyorsabban átadják a javítást a végfelhasználóknak. Egy példa forgatókönyv,mondjuk egy fejlesztő elkezdett dolgozni egy új szolgáltatáson. Az új funkció fejlesztése során azonosítanak egy már meglévő hibát. A fejlesztő létrehoz egy explicit commitot a hiba javítására. Ez az új javítási commit közvetlenül a master
ágba kerülhet, hogy kijavítsa a hibát, mielőtt az több felhasználót érintene.
Változások visszavonása és elveszett commitok visszaállítása
Néha előfordulhat, hogy egy feature
ág elhalványul, és nem olvad be a master
ágba. Néha előfordulhat, hogy egy pull request beolvasztás nélkül kerül lezárásra. A Git soha nem veszíti el ezeket a commitokat, és az olyan parancsok segítségével, mint a git log
és git reflog
megtalálhatók és visszahozhatók az életbe.
Hogyan használjuk a git cherry pick
Az git cherry-pick
használatának bemutatásához tegyük fel, hogy van egy tárolónk a következő ágállapottal:
a - b - c - d Master
\
e - f - g Feature
git cherry-pick
használata egyszerű és a következőképpen hajtható végre:
git cherry-pick commitSha
Ebben a példában commit
Sha egy commit hivatkozás. A git log
segítségével találhat meg egy commit-hivatkozást. Ebben a példában konstruáltunk mondjuk, hogy a master
-ben lévő `f` commitot szeretnénk használni. Először is biztosítjuk, hogy a master
ágon dolgozunk.
git checkout master
Ezt követően a következő paranccsal hajtjuk végre a cherry-pick-et:
git cherry-pick f
A végrehajtás után a Git-történetünk így fog kinézni:
a - b - c - d - f Master
\
e - f - g Feature
A f commit sikeresen át lett szedve a master ágba
A git cherry pick
git cherry pick
példájára átadhatunk néhány végrehajtási opciót is.
-edit
A -edit
opció átadása hatására a git a cherry-pick művelet végrehajtása előtt kér egy commit üzenetet
--no-commit
A --no-commit
opció végrehajtja a cherry picket, de új commit készítése helyett a cél commit tartalmát az aktuális ág munkakönyvtárába helyezi át.
--signoff
A --signoff
opció egy ‘signoff’ aláíró sort ad a cherry-pick commit üzenet végéhez
Az git cherry-pick
ezen hasznos opciók mellett számos egyesítési stratégia opciót is elfogad. Ezekről az opciókról többet megtudhatsz a git merge strategies dokumentációban.
A git cherry-pick emellett elfogadja az egyesítési konfliktusok feloldásához szükséges opciókat is, ezek közé tartoznak az opciók: --abort --continue
és --quit
ezeket az opciókat a git merge és a git rebase kapcsán részletesebben tárgyaljuk.
Összegzés
A cseresznyézés egy hatékony és kényelmes parancs, amely hihetetlenül hasznos néhány forgatókönyvben. A Cherry pickinget nem szabad visszaélni a git merge vagy a git rebase helyett. A git log parancs szükséges, hogy segítsen megtalálni a cseresznyézéshez szükséges commitokat.