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