Tato stránka je zkoušením příkazu git checkout
. Bude zahrnovat příklady použití a okrajové případy. V podmínkách Git je „pokladna“ akt přepínání mezi různými verzemi cílové entity. Příkaz git checkout
pracuje se třemi odlišnými entitami: soubory, revize a větve. Kromě definice „pokladny“ se fráze „pokladna“ běžně používá k implikaci provádění příkazu git checkout
. V tématu Undoing Changes jsme viděli, jak lze git checkout
zobrazit staré revize. Většinou tohoto dokumentu se zaměří na pokladní operace na větvích.
Odbavení větví je podobné jako odhlášení starých revizí a souborů, ve kterých je pracovní adresář aktualizován tak, aby odpovídal vybrané větvi / revizi; nové změny se však ukládají do historie projektu – to znamená, že nejde o operaci jen pro čtení.
Kontrola poboček
git checkout
umožňuje navigaci mezi větvemi vytvořenými git branch
. Zaškrtnutím větve se aktualizují soubory v pracovním adresáři tak, aby odpovídaly verzi uložené v této větvi, a řekne Git, aby v této větvi zaznamenal všechny nové závazky. Představte si to jako způsob, jak vybrat, na které vývojové linii pracujete.
Mít vyhrazenou větev pro každou novou funkci je dramatický posun od tradičního pracovního postupu SVN. Díky němu je směšně snadné vyzkoušet nové experimenty bez obav ze zničení stávajících funkcí a umožňuje pracovat na mnoha nesouvisejících funkcích současně. Pobočky navíc usnadňují několik pracovních postupů spolupráce.
Příkaz git checkout
může být občas zaměňován s git clone
. Rozdíl mezi těmito dvěma příkazy spočívá v tom, že klon pracuje na načtení kódu ze vzdáleného úložiště, alternativně pokladna přepíná mezi verzemi kódu, které jsou již v místním systému. > Za předpokladu, že repo, ve kterém pracujete, obsahuje již existující větve, můžete mezi nimi přepínat pomocí git checkout
. Chcete-li zjistit, jaké větve jsou k dispozici a jaký je aktuální název větve, spustit git branch
.
Výše uvedený příklad ukazuje, jak zobrazit seznam dostupných větví provedením git branch
příkaz a přepněte na určenou větev, v tomto případě feature_inprogress_branch
.
Nové větve
Git checkout
pracuje ruku v ruce s git branch
. Příkaz git branch
může slouží k vytvoření nové větve. Chcete-li spustit novou funkci, vytvořte novou větev off pomocí git branch new_branch
. Po vytvoření můžete pomocí git checkout new_branch
přepnout na tuto větev. Příkaz git checkout
navíc přijímá argument -b
, který funguje jako pohodlná metoda, která vytvoří novou větev a okamžitě na ni přejde. V jednom úložišti můžete pracovat na více funkcích přepínáním mezi nimi pomocí git checkout
.
Výše uvedený příklad současně vytváří a kontroluje . Možnost
-b
je příznak pohodlí, který říká Gitu, aby před spuštěním git checkout
spustil git branch
.
Ve výchozím nastavení git checkout -b
vychází new-branch
z aktuální HEAD
. Volitelný parametr další větve lze předat git checkout
. Ve výše uvedeném příkladu je předán , který pak
new-branch
vypne z existing-branch
namísto aktuální HEAD
.
Přepínání větví
Přepínání větví je přímá operace. Provedení následujícího bude směřovat HEAD
na špičku .
Git sleduje historii pokladen v reflogu. Chcete-li zobrazit historii, můžete spustit program git reflog
.
Git Checkout a vzdálená pobočka
Při spolupráci s týmem je běžné používat vzdálené úložiště. Tyto repozitáře mohou být hostovány a sdíleny nebo se může jednat o místní kopii jiného kolegy. Každé vzdálené úložiště bude obsahovat vlastní sadu poboček. Chcete-li provést rezervaci vzdálené pobočky, musíte nejprve načíst obsah pobočky.
V moderních verzích Gitu můžete vzdálenou pobočku zkontrolovat jako místní pobočku.
Starší verze Gitu vyžadují vytvoření nové větve založené na remote
.
Navíc můžete zkontrolovat novou místní pobočku a resetovat ji na poslední potvrzení vzdálených poboček.
Odpojené HLAVY
Nyní, když jsme viděli tři hlavní použití git checkout
na větvích, je důležité diskutovat o "detached HEAD”
stav. Pamatujte, že HEAD
je způsob, jakým Git odkazuje na aktuální snímek. git checkout
jednoduše aktualizuje HEAD
tak, aby ukazoval na zadanou větev nebo potvrzení. Když ukazuje na větev, Git si nestěžuje, ale když si prohlédnete potvrzení, přepne do stavu "detached HEAD”
.
Toto varování vám říká, že vše, co děláte, je „odděleno“ od zbytku vývoje vašeho projektu. Pokud měli začít vyvíjet funkci v odpojeném HEAD
stavu, neexistovala by žádná větev, která by vám umožňovala získat zpět t o to. Když se nevyhnutelně podíváte na jinou větev (např. Ke sloučení vaší funkce do), neexistuje žádný způsob, jak na ni odkazovat:
Jde o to, váš vývoj by měl vždy probíhat na pobočce – nikdy na odpojeném HEAD
. Tím zajistíte, že budete mít vždy odkaz na své nové závazky. Pokud se však právě díváte na staré potvrzení, nezáleží na tom, zda jste ve stavu HEAD
či nikoli.
Shrnutí
Tato stránka se zaměřila na použití příkazu git checkout
při změně větví. V souhrnu git checkout
při použití na větvích změní cíl HEAD
odkazu. Lze jej použít k vytváření větví, přepínání větví a rezervaci vzdálených větví. Příkaz git checkout
je základním nástrojem pro standardní provoz Git. Jedná se o protějšek git merge
. Příkazy git checkout
a git merge
jsou klíčové nástroje pro povolení git workflows
.