git cherry-pick
je výkonný příkaz, který umožňuje vybrat libovolné revize systému Git pomocí odkazu a připojit je k aktuálnímu pracovnímu HEAD. Cherry picking je akt výběru revize z větve a jejího použití na jinou větev. git cherry-pick
může být užitečný při vracení změn. Řekněme například, že je revize omylem provedena do nesprávné větve. Můžete se přepnout do správné větve a revizi cherry-picknout tam, kam má patřit.
Kdy použít git cherry pick
git cherry-pick
je užitečný nástroj, ale ne vždy je to nejlepší postup. Cherry picking může způsobit duplicitní revize a v mnoha scénářích, kde by cherry picking fungoval, se místo něj dává přednost tradičnímu slučování. S tím, že git cherry-pick
je užitečný nástroj pro několik scénářů…
Týmová spolupráce.
Často se stává, že tým najde jednotlivé členy, kteří pracují na stejném kódu nebo v jeho okolí. Možná má nová funkce produktu backendovou a frontendovou komponentu. Může existovat nějaký sdílený kód mezi to dvěma produktovými sektory. Možná vývojář backendu vytvoří datovou strukturu, kterou bude muset využívat i frontend. Vývojář frontendu by mohl pomocí git cherry-pick
vybrat revizi, ve které byla tato hypotetická datová struktura vytvořena. Tento výběr by umožnil vývojáři frontendu pokračovat v postupu na své straně projektu.
Opravy chyb
Při objevení chyby je důležité co nejrychleji dodat opravu koncovým uživatelům. Jako příklad scénáře uveďme, že vývojář začal pracovat na nové funkci. Během vývoje této nové funkce zjistí již existující chybu. Vývojář vytvoří explicitní revizi opravující tuto chybu. Tuto novou opravnou revizi lze cherry-picknout přímo do větve master
, aby se chyba opravila dříve, než ovlivní další uživatele.
Vrácení změn a obnovení ztracených revizí
Někdy se může stát, že větev feature
zastará a nebude sloučena do master
. Někdy může být požadavek na stažení uzavřen bez sloučení. Systém Git tyto revize nikdy neztratí a pomocí příkazů jako git log
a git reflog
je lze najít a cherry picking je vrátit zpět do života.
Jak použít git cherry pick
Pro demonstraci použití příkazu git cherry-pick
předpokládejme, že máme repozitář s následujícím stavem větve:
a - b - c - d Master
\
e - f - g Feature
git cherry-pick
Použití je přímočaré a lze jej provést takto:
git cherry-pick commitSha
V tomto příkladu commit
Sha je odkaz na revizi. Odkaz na revizi můžete najít pomocí git log
. V tomto příkladu jsme vytvořili řekněme, že jsme chtěli použít revizi `f` v master
. Nejprve se ujistíme, že pracujeme ve větvi master
.
git checkout master
Poté provedeme cherry-pick následujícím příkazem:
git cherry-pick f
Po provedení bude naše historie systému Git vypadat takto:
a - b - c - d - f Master
\
e - f - g Feature
Revize f byla úspěšně vybrána do větve master
Příklady příkazu git cherry pick
git cherry pick
lze také předat některé možnosti provedení.
-edit
Předání volby -edit
způsobí, že se git před provedením operace cherry pick zeptá na zprávu o revizi
--no-commit
Volba --no-commit
provede cherry pick, ale místo provedení nové revize přesune obsah cílové revize do pracovního adresáře aktuální větve.
--signoff
Volba --signoff
přidá na konec zprávy o revizi cherry-pick podpisový řádek ‚signoff‘
Kromě těchto užitečných voleb git cherry-pick
akceptuje také různé volby strategie slučování. Více informací o těchto volbách najdete v dokumentaci ke strategiím slučování v systému git.
Systém git cherry-pick navíc přijímá také vstupní volby pro řešení konfliktů při slučování, což zahrnuje volby: --abort --continue
a --quit
Tyto volby jsou podrobněji popsány v souvislosti s git merge a git rebase.
Shrnutí
Cherry picking je výkonný a pohodlný příkaz, který je neuvěřitelně užitečný v několika scénářích. Cherry picking by se neměl zneužívat místo příkazů git merge nebo git rebase. Příkaz git log je nutný k tomu, aby pomohl najít revize, které je třeba cherry picknout.