Git - Dodatek A - Rychlá příručka ke Gitu
Vytvoření nového repositáře / Správa větví / Zkoumání historie / Provádění změn / Slučování / Sdílení změn / Údržba repositáře
Obsah
- Vytvoření nového repositáře
- Správa větví
- Zkoumání historie
- Provádění změn
- Slučování
- Sdílení změn
- Údržba repositáře
Toto je pouze rychlé shrnutí hlavních příkazů; přechozí kapitoly jejich použití popisují detailněji.
Vytvoření nového repositáře
Z tar archivu:
$ tar xzf project.tar.gz $ cd project $ git init Initialized empty Git repository in .git/ $ git add . $ git commit
Ze vzdáleného repositáře:
$ git clone git://example.com/pub/project.git $ cd project
Správa větví
$ git branch # vypíše všechny lokální větve v tomto repositáři $ git checkout test # přepne pracovní adresář na větev "test" $ git branch new # vytvoří větev "new" začínající v aktuální HEAD $ git branch -d new # vymaže větev "new"
Namísto založení nové větve na aktuální HEAD (výchozí volba), použijte:
$ git branch new test # větev pojmenovaná "test" $ git branch new v2.6.15 # tag pojmenovaný v2.6.15 $ git branch new HEAD^ # commit před posledním $ git branch new HEAD^^ # commit před předposledním $ git branch new test~10 # deset commitů před vrcholem větve "test"
Vytvoření a současně přepnutí do nové větve:
$ git checkout -b new v2.6.15
Aktualizace a zkoumání větví z repositáře ze kterého jste klonovali:
$ git fetch # aktualizace $ git branch -r # seznam origin/master origin/next ... $ git checkout -b masterwork origin/master
Načtení větve z jiného repositáře, a volba nového jména ve vašem repositáři:
$ git fetch git://example.com/project.git theirbranch:mybranch $ git fetch git://example.com/project.git v2.6.15:mybranch
Udržujte si sezname repositářů se kterými pravidelně pracujete:
$ git remote add example git://example.com/project.git
$ git remote # seznam vzdálených repositářů
example
origin
$ git remote show example # načti detaily
* remote example
URL: git://example.com/project.git
Tracked remote branches
master
next
...
$ git fetch example # aktualizuj větve z example
$ git branch -r # seznam všech vzdálených větví
Zkoumání historie
$ gitk # znázorni a procházej historii $ git log # seznam všech commitů $ git log src/ # ...modifikujících src/ $ git log v2.6.15..v2.6.16 # ...v v2.6.16, ne v v2.6.15 $ git log master..test # ...ve větvi test, ne ve větvi master $ git log test..master # ...ve větvi master, ale ne ve větvi test $ git log test...master # ...v jedné větvi, ne v obou $ git log -S'foo()' # ...kde rozdíl obsahuje "foo()" $ git log --since="2 weeks ago" $ git log -p # zobraz také patche $ git show # nejnovější commity $ git diff v2.6.15..v2.6.16 # rozdíl mezi dvěma otagovanými verzemi $ git diff v2.6.15..HEAD # rozdíl oproti aktuálnímu vrcholu $ git grep "foo()" # vyhledej "foo()" v pracovním adresáři $ git grep v2.6.15 "foo()" # vyhledej "foo()" ve staré větvi $ git show v2.6.15:a.txt # zobraz starou verzi souboru a.txt
Vyhledávání chyb (regresí):
$ git bisect start
$ git bisect bad # aktuální verze je chybná
$ git bisect good v2.6.13-rc2 # poslední známá dobrá revize
Bisecting: 675 revisions left to test after this
# tady proveďte testy, potom zadejte:
$ git bisect good # pokud je revize dobrá, nebo
$ git bisect bad # pokud je revize špatná.
# opakujte až do nalezení viníka.
Provádění změn
Ujistěte se že git ví na koho svalovat vinu:
$ cat >>~/.gitconfig <<\EOF
[user]
name = Your Name Comes Here
email = you@yourdomain.example.com
EOF
Vyberte soubor jehož obsah má být zahrnut v dalším commitu, a poté proveďte commit:
$ git add a.txt # aktualizovaný soubor $ git add b.txt # nový soubor $ git rm c.txt # starý soubor $ git commit
Nebo, připravte a vytvořte commit v jednom kroku:
$ git commit d.txt # použije aktuální obsah pouze u souboru d.txt $ git commit -a # použije aktuální obsah všech sledovaných souborů
Slučování
$ git merge test # začlení "test" do aktuální větve
$ git pull git://example.com/project.git master
# načte a začleňuje do vzdálené větve
$ git pull . test # ekvivalent příkazu git merge test
Sdílení změn
Importování nebo exportování patchů:
$ git format-patch origin..HEAD # zformátuje patch pro každý commit
# v HEAD ale ne v origin
$ git am mbox # import patchů z mailboxu "mbox"
Načtení větve z jiného git repositáře, a následně její sloučení do aktuální větve:
$ git pull git://example.com/project.git theirbranch
Uložení načtené větve do lokální větve před jejím začleněním do aktuální větve:
$ git pull git://example.com/project.git theirbranch:mybranch
Po vytvoření commitů v lokální větvi aktualizujte vzdálenou větev vašimi commity:
$ git push ssh://example.com/project.git mybranch:theirbranch
Když se vzdálená i lokální větev obě jmenují "test":
$ git push ssh://example.com/project.git test
Zhrácená verze pro často používané vzdálené repositáře:
$ git remote add example ssh://example.com/project.git $ git push example test
Údržba repositáře
Kontrola poškození:
$ git fsck
Rekomprese, odstraňte nepoužívaný balast:
$ git gc




