Git - základy
Čtvrtek 10. Prosinec 2009 18:53
Erich Kaderka
Git je distribuovaný systém správy verzí. Mezi jeho hlavní výhody patří snadné vytváření větví (branch) a jejich slučování (merge). Díky tomu, že má vývojář celý repozitář u sebe může commitovat, mergovat nebo vytvářet nové větve i když je offline. Git má oproti jiným SCM nástrojům výhodu i v tzv staging area neboli indexu. Po přidání souborů si může vývojář znovu projít nové nebo změněné soubory než provede commit.
Instalace
V Debianu Git nainstalujeme pomocí příkazu:aptitude install git-core
Verze pro Windows je ke stažení na zde
Vytvoření repozitáře
Nejdříve si vytvoříme adresář, poté se do něj přesuneme a spustíme git init.mkdir muj_projekt
cd muj_projekt
git init
Takový repozitář je pouze lokalní, pokud chceme vytvořit sdílený repozitář na serveru, použijeme příkaz:
git init --bare --shared=true
Pro starší verze Gitu (< 1.6.2) je potřeba postupovat následovně
mdir new_repo
cd new_repository
git init
touch .gitignore
git add .
git commit -m "prvni commit, gitignore"
cd ..
git clone --bare --shared new_repo/ new_repo.git
Každodenní používání
Většinou moje práce s Gitem vypadá následovně, přepnu se na větev master a stáhnu si nejnovější změny:git checkout master
git pull
Vytvořím si novou větev:
git checkout -b "nova_featura"
Provedu změny v souborech a prohlédnu si změněné soubory:
git status
Případně se podívám co jsme v konkrétním souboru změnil:
git diff soubor
Přidám buď jeden soubor:
git add file
Nebo adresář:
git add adresar/
Nebo všechny soubory
git add .
Pokud jsem nějaký soubor smazal, tak ho odstraním:
git rm soubor
Nyní se nacházím v tz stage area (index), kdy mohu ještě před commitem soubor vrátit do původního stavu pomocí:
git reset soubor
Poté soubory commitnu:
git commit -m "hlaska proc jsem provedl zmeny"
Vyplatí se psát commit hlášky podrobně, protože za pár dní ani samotný autor nemusí vědět, proč daný commit dělal, když napíše oprava bugu :).
Nyní jsou moje změny ve větvi commitnuté a je potřeba je zanést do master větve a pushnout na server. Nejdříve se přepnu na master, stáhnu si aktualní kód, poté se přepnu do větve ve které jsme provedl svoje změny, provedu rebase master větve (sloučím master a svoji větev) a udělám merge své větve do master. Poté pošlu změny příkazem git push na server:
git checkout master
git pull
git checkout nova_featura
git rebase master
git checkout master
git merge nova_featura
git push
Prohlédnu si výpis všech větví a případně pokud je moje práce na feature ukončena, tak ji smažu
git branch
git branch -D nova_featura





