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í.
Checkout – př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]