Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

GIT (2/2) - přehled základních příkazů

  • git status zjistí aktuální stav repozitáře v dané větvi

Inicializace

  • git init inicializace nového repozitáře (adresář nesmí obsahovat repozitář, aniž žádný nadřazený)
  • git remote add origin [url] přidání adresy serveru se kterým chceme repozitář synchronizovat
  • git clone [url] zkopírování repozitáře z url adresy (vytvoření složky, která se jmenuje jako repozitář)
  • git clone [url] [adresar] zkopírování repozitáře z url adresy do vlastního adresáře

Větve (branch)

Větve jsou jeden z nejdůležitějších částí GITu, jelikož umožňují větvit kód na různé části. Používají se v následujících případech:

  1. Umožňují odlišit různé chování programu např. v závislosti na nastavení. Poté může repozitář obsah i více hlavních větví.
  2. Když uživatelé upravují kód mimo hlavní větev. Výhodou je, že kód v hlavní větvi by měl být vždy ve stabilní verzi. Další úpravy se přidají až po finálním otestování.

Téměř vždy přítomnou větví je větev master, kde by měl být uložený hlavní kód

Příkazy:

  • git branch [jmeno] vytvoří novou větev (v případě, že ještě neexistuje)
  • git checkout [jmeno] přepne aktuální větev na jmeno
  • git merge [jmeno] spojí větev jmeno s aktuální větví
  • git branch -d [jmeno] smaže větev jmeno

Štítky (tagy)

Štítky jsou vhodné pro rychlý přehled o stavu daného commitu. Používají se zpravidla pro verzování release kódů (např. v0.1 nebo odevzdani-1).

  • git tag zobrazí všechny štítky (tagy) v daném repozitáři
  • git tag [nazev] nastaví současnému commitu štítek (tag) s označením nazev
  • git tag -d [nazev] smaže štítek (tag) s označením nazev

Změny v repozitáři

  • git log zobrazí historii změn v dané větvi
  • git log --follow [soubor] zobrazí historii změn souboru soubor v dané větvi
  • git diff [vetev1]...[vetev2] zobrazí změny mezi dvěmi větví vetev1 a vetev2
  • git show [commit] zobrazí hlavičku daného commitu
  • git add [soubor] přidá soubor(y) nebo obsah složek k přidání do repozitáře
  • git commit -m"zpráva" potvrzení změn se zprávou. Zpráva by měla obsahovat souhrn změn a délka by neměla přesáhnotu 50 znaků. Možno přidat přepínač -a, který zahrne všechny modifikované soubory automaticky do commitu.
  • git reset [commit] vrácení se ke stavu pod označením commit
  • git reset --hard tvrdé obnovení současného commitu bez možnosti návratu
  • git reset --hard [commit] tvrdé obnovení commitu bez možnosti návratu

Synchronizace se serverem

  • git fetch stáhne veškeré změny ze serveru
  • git merge [nazev] spojí větev s číslem commitu nebo názvem nazev do současné větve
  • git pull stáhne veškeré změny ze serveru a aktualizuje současnou větev (příkaz je kombinací git fetch a git merge)
  • git push nahraje veškeré lokální změny ze serveru

Přehled pokročilých příkazů

Uložení práce a pokračování v ní

V případě, že se potřebujete přepnout do jiné větve a máte rozdělanou práci, kterou nechcete nyní commitnout, můžete využít příkazů git stash.

  • git stash uloží Vaší práci do repozitáře a přepne se zpátky na původní commit
  • git stash pop návrat k rozpracovanému projektu
  • git stash drop zahození změn rozpracovaného projektu

Submoduly

Projekty se obvykle sestávají z několika částí, jako jsou zdrojové kódy, knihovny, případně hardware a dokumentace. Udržet všechny tyto části v jednom repozitáři by bylo neúsnosné a i nepraktické (ne každý potřebuje všechny části). Z tohoto důvodu zde existují submoduly, které se obvykle sdružují do jednoho velkého projektu. Submodul není nic jiného než vlastní repozitář umístěný uvnitř jiného repozitáře. Fyzicky v něm ovšem není, nadřazený repozitář obsahuje pouze adresu, kde se submodul nachází.

Následující příkazy pracují se submoduly:

  • git submodule add [url] přidá submodul z adresy url do adresáře, kde se zrovna nacházíte a jméno složky bude jméno repozitáře
  • git submodule add [url] [adresar] přidá submodul z adresy url do adresáře, kde se zrovna nacházíte a jméno složky bude mít název adresar
  • git submodule init inicializuje všechny submoduly v nadřazeném repozitáře (provádí se zpravidla po klonování)
  • git submodule update checkout všech submodulů do stavu commitu nadřazeného repozitáře (provádí se zpravidla po git submodule init). Jednotlivé submoduly poté nemusí být v poslední verzi a doporučuji provést příkaz git checkout master pro každý submodul nebo hromadně git submodule foreach git checkout master nebo tomu obdobný příkaz
  • git submodule foreach [příkaz] provede příkaz pro každý submodul v daném repozitáři (viz. předchozí příklad)

Další návody a odkazy

Vizualizovaný cheatsheet pro GIT můžete nalézt zde

Oficiální zjednodušený cheatsheet GitLabu zde

Kompletní dokumentace ke GITu v češtině (není kompletní zatím) zde nebo v angličtině v podobě PDF, MOBI, EPUB nebo webově zde

courses/b2b99ppc/howtos/git_commands.txt · Last modified: 2020/12/29 20:08 by viteks