Minulý týden jsme se navzájem snažili naučit dělat s gitem.  Nachystal jsem si na to takový jednoduchý tahák.

git init #vyrobit repozitář
git clone # okopírovat z internetu
git config -l/-e --global/--local

Zobrazit/Upravit globální(systémové)/lokální nastavení.

Z nastavení obvykle potřebuju:

user.email
user.name
push.simple
git checkout remote/origin/6b361a1f3976dbb2aedff6dffbaab7490a9d1965

Přepnutí se na jinou větev nebo daný commit. Remote a origin se používa v souvislosti se vzdáleným repozitářem.

git diff HEAD, HEAD^, HEAD^^

HEAD je ten nejposlednější stav, ^ o jedno před, ^^ o dvě před

git format-patch

když chci pro každý commit vygenerovat samostaný patch

git status # co je v commitu a co ještě ne
git add/rm/mv # práce se soubory
git commit -m --amend

-m text do logu (když neumím zavřít vim)
opravit commit

git show hash # co je v daném commitu?
 git log # jaké jsou změny
 git push --force

# push do remote repozitáře
# když něco nejde použij sílu

git remote add origin http://github.com/jmlich/...
git remote -v

Všechno dělám lokálně a jenom push dělam na remote repozitáři

git tag # označit release
meld # ui nástroj pro porovnání souborů
git merge # spojit branche
git difftool -t kdiff3 master release
git branch -a # seznam větví (lokálních/všech)
gitk # ui nástroj pro vyhledávání v commitech
git cherry-pick

Vezme jeden commit a použije na aktuální větev

git bisect # půlením intervalů dojdu k místu, kde je to rozbité
 git checkout fd0a623f
 git checkout 256d85
 git bisect
 git bisect good
 git bisect bad
 git bisect good
 git bisect reset
git rebase

Když potřebuju spojit commity a upravit commit message před odesláním na internet

git rebase -i master # -i interaktivně
git revert # odstranit nezbedný commit
.gitignore

texťák se seznamem souborů co se nenahrávají do gitu

git reset --hard

když něco rozbijeme, tak se můžeme vrátit do původního stavu

git blame main.c -L 7,7

kdo to rozbil a kterým commitem

git submodule

Všechny nastavení jsou uložené v:
/.git/
git hooks # spustit nějaký skript po commitu

github.com #  Nejznámější git hosting
torrieseGit # někajé pěkné ui pro Windows?

Jak to všechno vlastně funguje?

Přidá další remote git repozitář

git remote add <name> /path/to/other/repo/.git
git fetch <name>
git branch <name> <name>/master #optional

Loading

By Jozef Mlích

Software Developer at GreyCortex, NemoMobile contributor, Micro light aircraft pilot, OpenAlt Conference organizer