Hlavní navigace

Git - základy

14. 12. 2009 20:50 (aktualizováno) | Martin Popelák

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

Závěr

I když to tak na první pohled nemusí vypadat práce s Gitem je velmi jednoduchá a přímočará. Při přechodu ze Subversion na Git se vyskytlo pár problémů (instalace na serveru, pochopení základního workflow, instalace na Windows), ale po jejich překonání si i ostatní členové týmu na Git zvyknuli a jsou jím více či méně nadšeni :).

Zdroje