GIT hands-on Mgr. Šimon Tóth
12. dubna 2012
()
GIT hands-on
12. dubna 2012
1 / 25
Úvod
Obsah pˇrednášky
O cˇ em to nebude
porovnání svn, cvs vs. git velmi pokroˇcilé vlastnosti
()
GIT hands-on
12. dubna 2012
2 / 25
Úvod
Obsah pˇrednášky
Doporuˇcené cˇ tení
man git http://book.git-scm.com http://progit.org/book
()
GIT hands-on
12. dubna 2012
3 / 25
Úvod
GIT
Technologie na pozadí SHA1 identifikátory comitu˚ deduplication rychlé vyhledávání unikátní identifikace detekce chyb
tˇri typy objektu˚ blob blok dat tree reference na jiné stromy a bloby1 commit odkazuje na specifický strom + meta informace tag odkazuje na specifický strom
1
strom nemuže ˚ být prázdný ()
GIT hands-on
12. dubna 2012
4 / 25
Úvod
GIT
Ukládání dat
každý comit referencuje celý strom silná dependence na deduplikaci pomocí SHA1
()
GIT hands-on
12. dubna 2012
5 / 25
Úvod
Distribuované VCS
Centralizovaný VCS
versiondb
checkout soubor
version3
PC2
version2
checkout
()
soubor
version1
PC1
Server
GIT hands-on
12. dubna 2012
6 / 25
Úvod
Distribuované VCS
Decentralizovaný VCS
checkout
checkout
soubor
soubor versiondb
version3
version3
version3
version2
version2
version2
version1
version1
version1 versiondb
versiondb
PC1
()
Server
GIT hands-on
PC2
12. dubna 2012
7 / 25
Úvod
Distribuované VCS
Výhody a nevýhody
+ lokální operace − nároˇcnost na diskový prostor ± nevynucuje specifický workflow ± je to jiné
()
GIT hands-on
12. dubna 2012
8 / 25
Praktický GIT
Lehký úvod
Staging area working directory
git add
stage directory
git commit
repository
()
GIT hands-on
12. dubna 2012
9 / 25
Praktický GIT
Lehký úvod
Demo cˇ .1
Základní práce s repozitáˇrem Poˇcáteˇcní nastavení První commit a stage area Undo, mazání souboru˚ a detekce pˇrejmenování Interaktivní git add Git ignore
()
GIT hands-on
12. dubna 2012
10 / 25
ˇ Vetve
Základní práce
ˇ eˇ a git Vetv
ˇ vytvoˇrení vetve je velmi levná operace lokální operace
pˇrepínání je rozumneˇ rychlé u mergování je snaha automatizovat
()
GIT hands-on
12. dubna 2012
11 / 25
ˇ Vetve
Základní práce
Demo cˇ .2
ˇ Vetve ˇ Vytvoˇrení vetve Merge
()
GIT hands-on
12. dubna 2012
12 / 25
ˇ Vetve
Cherry pick
Cherry pick
vyzobávání comitu˚ vhodné napˇríklad pro backport bugfixu˚
()
GIT hands-on
12. dubna 2012
13 / 25
ˇ Vetve
Cherry pick
Demo cˇ .3
ˇ Alternativní práce s vetvemi Cherry pick
()
GIT hands-on
12. dubna 2012
14 / 25
ˇ Vetve
Rebase
Rebase
x3
x2
x1
()
GIT hands-on
12. dubna 2012
15 / 25
ˇ Vetve
Rebase
Rebase
y2
y1
x3
x2
x1
()
GIT hands-on
12. dubna 2012
15 / 25
ˇ Vetve
Rebase
Rebase
x5
y2
x4
y1
x3
x2
x1
()
GIT hands-on
12. dubna 2012
15 / 25
ˇ Vetve
Rebase
Rebase m1
x5
y2
x4
y1
x3
x2
x1
()
GIT hands-on
12. dubna 2012
15 / 25
ˇ Vetve
Rebase
Rebase y2∗
y1∗
x5
y2
x4
y1
x3
x2
x1
()
GIT hands-on
12. dubna 2012
15 / 25
ˇ Vetve
Rebase
Rebase
pˇrepisuje historii ˇ ˇ umožnuje zachovat lineární vetve ˇ interaktivní rebase pro hluboké zmeny
()
GIT hands-on
12. dubna 2012
16 / 25
ˇ Vetve
Rebase
Demo cˇ .4
ˇ Alternativní práce s vetvemi Rebase ˇ rebase Pˇresnejší Interaktivní rebase
()
GIT hands-on
12. dubna 2012
17 / 25
ˇ Vetve
Rebase
Rebase
pˇríprava patche/pull requestu lokální úklid dlouhodobý vývoj vuˇ ˚ ci upstreamu developer / integrator workflow
()
GIT hands-on
12. dubna 2012
18 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
ˇ repozitáˇre Zveˇrejnení
nebudeme probírat serverový SW pˇrímo podporované protokoly: local git http(s) ssh
()
GIT hands-on
12. dubna 2012
19 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
Workflow
git nevynucuje workflow workflow je vhodné zvolit podle zpusobu ˚ použití vhodný i pro velmi agilní metody
()
GIT hands-on
12. dubna 2012
20 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
Základní workflow
privátní repozitáˇr
veˇrejný repozitáˇr git pull
git push
git push
git pull
()
privátní repozitáˇr
veˇrejný repozitáˇr
Dev1
Dev2
GIT hands-on
12. dubna 2012
21 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
Integraˇcní workflow
Integrace veˇrejný repozitáˇr
release repozitáˇr
veˇrejný repozitáˇr
git pull git push
git push
git push git pull
git pull privátní repozitáˇr
integraˇcní repozitáˇr
privátní repozitáˇr git pull
Dev1
()
Dev2
GIT hands-on
12. dubna 2012
22 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
Demo cˇ .5
Veˇrejný repozitáˇr Bare repozitáˇr Remotes Tracking Reseting
()
GIT hands-on
12. dubna 2012
23 / 25
Remotes
ˇ repozitáˇre Zveˇrejnení
Hooks
git podporuje širokou škálu hooks skripty, které se spustí pˇred/po každém commitu nebo jiné akci
()
GIT hands-on
12. dubna 2012
24 / 25
Git nástroje
Údržba
Demo cˇ .6
Nástroje Údržba Speciální pˇríkazy
()
GIT hands-on
12. dubna 2012
25 / 25