Git je distribuovaný systém správy verzí, který vytvořil Linus Torvalds pro Linuxové jádro.
přidá soubory, které se commitnou
git add <soubor>
přidá všechny hlídané změněné soubory
git add -u
zobrazí existující větve
git branch
zobrazí vzdálené i lokální větve
git branch -a
zobrazí pouze vzdálené větve
git branch -r
smaže lokální větev
git branch -D <větev>
přejmenuje aktuální větev
git branch -m <nový_název>
nastaví upstream k větvi devel
na origin/devel
git branch --set-upstream-to=origin/devel devel
zobrazí podrobné informace o větvích včetně upstream
git branch -vv
naklonuje vzdálený repozitář
git clone <repozitář>
oprava posledního commitu
git commit -m 'initial commit' git add forgotten_file git commit --amend
nastaví jméno uživatele
git config --global user.name "<Jméno Příjmení>"
nastaví e-mail uživatele
git config --global user.email <emailová@adresa>
nastaví defaultní editor na nano
git config --global core.editor nano
nastaví defaultní chování git push
nothing
- nic nepushnematching
- pushne všechny větve, které mají stejné názvy na obou stranáchupstream
- pushne aktuální větev do její upstream větvesimple
- jako upstream
, ale pushne jen v případě, že se větve jmenují stejněcurrent
- pushne aktuální větev do vzdálené větve se stejným jménemgit config --global push.default <typ např. simple>
nastaví diff tool a merge tool na kdiff3
git config --global diff.tool kdiff3 git config --global merge.tool kdiff3
vypíše URL vzdáleného repozitáře
git config --get remote.origin.url
nastaví vlastní certifikační autoritu
git config --global http.sslCAInfo /cesta/k/cert.pem
zobrazí soubory, které se změnily od posledního commitu
git diff --name-only
vynechá řádky, které se liší bílými znaky na konci a zobrazuje pouze změněné řádky bez okolních
git diff --ignore-space-at-eol -U0
zobrazí rozdíly v souboru mezi lokální verzí a vzdálenou verzí ve větvi master
git difftool master origin/master <soubor>
na stdout vytiskne patch z předchozího commitu do aktuálního
git format-patch HEAD~1 --stdout
hledá <výraz> ve všech souborech ve všech verzích
git rev-list --all | xargs git grep <výraz>
přepnutí na existující větev
git checkout <větev>
přepnutí na větev, která se vytvoří
git checkout -b <nová větev>
vytvoří novou větev se sledování vzdálené větve
git checkout --track <vzdálený server>/<větev>
zruší necommitlé změny v souboru
git checkout -- <soubor>
přidá soubor z jiné větve do větve aktuální
git checkout <větev> <soubor>
Vytvoří prázdný repozitář gitu
git init
vytvoří prázdný repozitář bez bez pracovního adresáře (pro serverovou část)
git init --bare
zobrazí historii projektu
git log
zobrazí poslední dva commity i s rozdílama
git log -p -2
zobrazí pro každý commit jednoduchou statistiku
git log --stat
zobrazí každý commit na jeden řádek
git log --pretty=oneline
zobrazí historii větví formou ASCII grafu
git log --graph
zobrazí commity a změněné soubory
git log --name-status --oneline
zobrazí přehledný obarvený graf s relativním stářím commitů
git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
zobrazí historii souboru i s rozdílama
git log -p <soubor>
zobrazí commity, kde se nachází výraz ve změnách
git log -S <výraz>
vypíše soubory v gitu
git ls-files
vypíše počet řádků v souborech kontrolovaných gitem
git ls-files | xargs wc -l
do stávající větve připojí <větev>
git merge <větev>
začlení vzdálenou větev do větve lokální
git pull
odešle data na server
git push
pokud na serveru ještě neexistuje větev, tak ji tam pošle
git push <jméno serveru> <větev>
nastaví aktuální větvi jako korespondující vzdálenou větev master
git push --set-upstream origin master
smaže vzdálenou větev
git push origin --delete <větev>
odebere soubory, které se mají commitnout
git reset <soubor>
zruší poslední commit
git reset --soft HEAD^
vrátí všechny soubory do posledního commitlého stavu
git reset --hard
přidá vzdálený repozitář na github
git remote add origin git@github.com:<uživatel>/<repozitář>
nastaví url adresu vzdáleného repozitáře
git remote set-url origin git@github.com:<uživatel>/<repozitář>
vytvoření vzdáleného repozitáře z lokálního přes ssh
# na serveru mkdir /<cesta>/project.git cd /<cesta>/project.git git init --bare
# na klientovi git remote add origin ssh://<uživatel>@<server>/<cesta>/project.git git push origin master # nastaví upstream větev(vhodne pro push.default upstream nebo simple) git push --set-upstream origin master
zobrazí informace o vzdáleném adresáři
git remote show origin
zobrazí url vzdáleného repozitáře
git remote get-url origin
přejmenuje origin na mainstream
git remote rename origin mainstream
odebere soubor ze sledovaných gitem
git rm --cached <soubor>
odebere všechny adresáře
git rm --cached -r --ignore-unmatch adresar/**
vypíše hashe pro verze od 1. 6. 2016
git rev-list --all --after=2016-06-01
zobrazí soubor
z předposledního commitu
git show HEAD~1:<soubor>
vypíše text souboru z daného commitu se zalomenými řádky
GIT_PAGER='' git show <hash>:<soubor>
pokud existují necommitlé změny, které chceme uchovat přesto chceme zavolat pull
je možné zavolat příkaz stash
, který sková aktuální změny
git stash git pull git stash pop
pokud chceme zavolat commit v jiné větvi (třeba devel
) než aktuální, je možné využít stash
git stash git checkout devel git stash pop
Zobrazí co se bude commitovat co ne a další informace
git status
zobrazí soubory, které nejsou přidané
git status -u
zobrazí soubory, které se ignorují
git status --ignored
zobrazí všechny tagy
git tag
vytvoří tag v1.1
s popisem verze 1.1
git tag -a v1.1 -m 'verze 1.1'
smaže tag v1.1
git tag -d v1.1
pokud tag v1.1
existuje, tak ho přesune
git tag -fa v1.1
soubor, který určuje, které soubory git ignoruje
ignoruje všechny soubory kromě *.py (nevztahuje se na ui_*.py) *.ui Makefile, *.png soubory v adresáři images a přidá adresář src se všema podadresářema
* !*.py !*.ui !Makefile !images/ !images/*.png !src/ !src/**/ # komentar ui_*.py