Git manuál - základní příkazy

Aktualizováno: 9. 7. 2015, datum vydání: 25. 4. 2015

Git je open source verzovací systém. Základní chování gitu je také ukázáno v první kapitole a v třetí kapitole tutoriálu Ruby on Rails od Michaela Hartla. Zde uvádím výpis některých funkcí. Další informace jsou v kompletní dokumentaci.

Stručný přehled základních příkazů

Inicializace lokálního git úložiště

$ git init

Zjištění stavu úložiště

$ git status

Add – přidání všech změn souborů do úložiště

$ git add -A

Commit – uložení přidaných souborů do úložiště

$ git commit -m "[descriptive message]"

Přidání změn a uložení

$ git commit -a -m "[descriptive message]"

Jde skoro o provedení dvou příkazů naráz: git add -A a git commit -m "[descriptive message]". Jsou sice zahrnuty modifikované a smazané soubory, ale nové nikoli!

Log – výpis historie úložiště

$ git log
$ git log --oneline --decorate

Tento příkaz vypíše větve včetně jejich čísel commitů

Vytvoření nové větve

$ git branch [branch-name]

Vytvoří kopii aktuální větve včetně pozměněných souborů (od posledního commitu). Nepřepne však do ní.

Checkoutpřepnutí do uvedené větve

$ git checkout [branch-name]

Shodný commit

Git checkout předpne do zadané větve a aktualizuje změněné soubory z předchozí aktuální větve, pokud obě větve mají shodný poslední commit. Tzn. nemusí být tímto příkazem načtena původní zadaná větev v takovém stavu, v jakém byla dříve v momentu, kdy jsme ji opouštěli. Automaticky může dojít k jejímu update na základě změn provedených v předchozí větvi! Pozměněné soubory jsou vypsány. Změny lze zjistit příkazem $ git diff. Pokud chceme načíst původní commit a zrušit kompletní všechny změny ve větvi, tak můžeme následně zavolat příkaz $ git checkout -f. Ale toto nás vrátí až ke commitnuté verzi.

Odlišný commit

Trochu jinak se to chová, pokud mají větve odlišný poslední commit. To se pak načte původní commitnutá verze přepnuté větve. Když se aktuální verze commitne a pak se dá checkout do jiné větve, tak se načte opravdu původní větev (mají již jiný commit). Když v takovém případě chceme dát verze dohromady, tak to provedeme příkazem $ git merge.

Vytvoření nové větve a přepnutí do ní

$ git checkout -b [branch-name]

Je to to samé jako vytvoření nové větve pomocí $ git branch [branch-name] a následné přepnutí do nové větve pomocí $ git checkout [branch-name].

Obnova aktuální větve do původního stavu

$ git checkout -f

Ignoruje provedené změny v souborech, které nebyly ještě commitnuty.

Spojení (nakombinování) zadané větve do aktuální větve

$ git merge [branch]

Výpis aktuální větve a dalších větví

$ git branch

Výmaz větve

$ git branch -d [branch-name]

Typické sady příkazů

Přidání změn do úložiště a uložení souborů

$ git status
$ git add -A
$ git commit -m "[descriptive message]"

Uložení aktuální verze [branch-name] a spojení s hlavní verzí master

$ git add -A
$ git commit -m "[descriptive message]"
$ git checkout master
$ git merge [branch-name]

Nahrání na Bitbucket

$ git push

Nahrání větve.

$ git push -u origin [branch-name]

Nahrání oddělené větve.

Nahrání na Heroku

$ git push heroku

Uložení do gitu, nahrání na Bitbucket a Heroku

$ git status
$ git commit -am "[descriptive message]"
$ git push
$ bundle exec rake test
$ git push heroku

Vytvoření a smazání dané větve bez sloučení s hlavní větví master

$ git checkout -b [branch-name]
$ git add -A
$ git commit -a -m "[descriptive message]"
$ git checkout master
$ git branch -D [branch-name]

Návrat k předchozí uložené verzi např.

$ git reset --hard [commit]
$ git clean -fd

Více viz článek Git - návrat k předchozí uložené verzi.

Vytvoření oddělené větve a její nahrání na Bitbucket

$ git checkout master
$ git checkout -b [branch-name]
...
$ git status
$ git add -A
$ git commit -m "[descriptive message]"
$ git push -u origin [branch-name]

Další články