5.3 Git Checkout

V predchádzajúcej lekcii sme si pomocou git branch nazov-vetvy vytvorili novú vetvu, no zostali sme aj naďalej na pôvodnej vetve main. Aby sme sa na novú vetvu vedeli reálne presunúť, použijeme príkaz git checkout.

Čo je HEAD?

Predtým, ako sa pozrieme na samotný checkout, je dobré vedieť, čo je to HEAD. HEAD je vlastne len ukazovateľ, ktorý hovorí Gitu (a nám), na ktorej vetve a na ktorom commite sa práve nachádzame. Vždy, keď spravíš nový commit, HEAD (spolu s vetvou, na ktorej sa nachádzaš) sa automaticky posunie na tento nový commit.

Keď teda hovoríme o “prepnutí” na inú vetvu, v skutočnosti hovoríme o tom, že posunieme HEAD tak, aby ukazoval na inú vetvu/commit.

Prepnutie na existujúcu vetvu

git checkout nazov-vetvy

Tento príkaz:

  1. Presunie HEAD (a teda aj nás) na vetvu nazov-vetvy
  2. Upraví obsah súborov v priečinku tak, aby zodpovedal poslednému commitu na tejto vetve

Ak si teraz spustíš git branch, hviezdička už bude pri novej vetve:

  main
* nazov-vetvy

Vytvorenie a prepnutie naraz - git checkout -b

Keďže postupnosť “vytvor vetvu a hneď sa na ňu presuň” je extrémne častá, existuje pre ňu skratka - prepínač -b:

git checkout -b nova-vetva

Tento jediný príkaz nahrádza dvojicu:

git branch nova-vetva
git checkout nova-vetva

Note: -b je skratka pre branch. Ak sa pokúsiš takto vytvoriť vetvu, ktorá už existuje, Git ti to nedovolí (v takom prípade použi obyčajný git checkout nazov-vetvy, bez -b).

Modernejšia alternatíva - git switch

git checkout je v Gite veľmi starý príkaz, ktorý okrem prepínania vetiev vie robiť aj úplne iné veci (napríklad vracať zmeny v súboroch). Kvôli tejto “preťaženosti” bol neskôr pridaný nový, jednoduchší príkaz určený výlučne na prácu s vetvami - git switch.

git switch nazov-vetvy

A rovnako existuje aj skratka na vytvorenie a rovnaké prepnutie (namiesto -b sa tu používa -c, ako create):

git switch -c nova-vetva

Tip: Obidva prístupy (git checkout aj git switch) fungujú a robia to isté. git switch je však čitateľnejší a menej náchylný na omyl, takže ak máš na výber, odporúčam používať práve jeho. git checkout sa napriek tomu stále bežne používa (a uvidíš ho aj v mnohých starších návodoch), preto je dobré poznať oba.