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.
V Debianu Git nainstalujeme pomocí příkazu:
aptitude install git-core
Verze pro Windows je ke stažení na zde
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
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
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 :).
Do zdroju snad patri i toto.
http://www.fuzzy.cz/cs/projekty/git-uzivatelska-prirucka/
Jinak dik za rychlokurz.
eM
O přechodu na git také uvažujeme, není mi ale jasná jedna věc - jaká je podpora v IDE? Když se podívám, jak buggy jsou oba konektory SVN třeba v Eclipse, raději nechci vidět, co to bude dělat s daleko méně rozšířeným gitem.
A konzole není řešení - když pracuji v týmu, potřebuji vědět, kde co kdo změnil, udělat code review a případně dopsat nějaké komentáře nebo něco opravit. To je bez nějakého klikacího prostředí prakticky neřešitelné.
1) Aby se zanesly změny z mé větve nova_featura do master.
2) Díky, opraveno.
3) Neznal jsem, přídáno, díky.
4) IDE nepoužívám, kolega zkoušel v létě podporu v Eclipse a skoro nic to neumělo, otázka je
jak vypadá situace dneska. Co se týká reportů tak můžete zkusit příkaz git gui, git log, git shortlog.
4: Vrele doporucuju pro code review nastroj gitx (http://gitx.frim.nl/) pro mac, je to naprosto perfektni a mate prehled kdo co jak kdy udelal a dokonce lehkou podporu commitovani. Takze revize kodu a drobne opravy zvladne kazdy.
Mno nejaky plugin jak pro eclipse tak pro net beans je.. Myslim ze to ale v lete bylo spise kolegou nez-li nastrojem, takze bych doporucil vyzkouset a uvidite :D
Test
Přečteno 20 289×
Přečteno 16 661×
Přečteno 9 618×
Přečteno 7 689×
Přečteno 7 608×