git

Václav Ovsík vaclav.ovsik na gmail.com
Středa Leden 7 08:18:48 CET 2015


On Wed, Jan 07, 2015 at 07:57:28AM +0100, Pavel Troller wrote:
> Zdravim,
>   ale to je prave to nedorozumeni, ktere asi v te veci mam.
>   Ve vsech doposud znamych RCS systemech (CVS, SVN) se prikazem commit poslou
> me zmeny do hlavniho repository. To samozrejme nechci, protoze jde o me 
> privatni zmeny, ktere v oficialni verzi nemaji co delat a nadto se domnivam,
> ze oficialni strom je chranen pred prepisem anonymnimi uzivateli. Tedy jsem
> commit ani nezkousel. V gitu znamena "komitnout" neco jineho ?

Ano. GIT je decentralizovany VCS narozdil od CVS, SVN.
Tim, ze jste si udelal git clone, jste si ve skutecnosti nestahl jenom
working copy, ale pretahl jste k sobe kompletni historii (posloupnost
commitu) stahovaneho branche (vetsinou master). Vsechno mate u sebe
a muzete pracovat i offline s historii kterou mate.
Prikazem git clone se vam automaticky vytvoril tzv "remote tracking
branch" - coz je Vas lokalni branch. Vy si musite svoje lokalni upravy
commmitnout do tohoto lokalniho branche.
Pouzivejte
    git status
a napriklad
    git branch -a
Vam ukaze jak lokalni, tak vzdalene branche.
Graficky si to take muzete prohlednout pres
    gitk -a

Kdyz budete chtit aktualizovat, tak git pull vlastne dela dve veci. Jak
je popsano v manovych strankach. Prvni veci je 
    git fetch
Tenhle prikaz dotahne nove commity ve vzdalenem branchi do vaseho
.git/... Pak jde o to promitnou tyhle commity do vaselo lokalniho
branche. Krome git merge je mozne zvazit pouziti git rebase. Kdy se
snazite posunout vase commity nad ty nove commity ve vzdalene branch.

Ten git rebase je asi neco podobneho jako udrzba serie patchu pomoci
nastroje quilt. Vyhoda je, ze pokud mate co uprava to jeden
patch/commit, tak to pak bude zustavat i po aktulizacich. Naopak kdyz
budete vzdalene veci mergovat, tak se vam to rozpadne do ruznych commitu
a slouceni. Mozna bude pro Vase ucely lepsi delat tedy misto git pull
    git fetch
pak se podivat pres git status - ten rekne o kolik commitu se posunul
vzdaleny branch a muzete se podivat na rozdily apod.
A nakonec zkusit git rebase, kdy se posunete s vasim branchem na HEAD
vzdaleneho branche.

Ale jsem taky samouk, tak to treba nekdo popise lepe. :)
Jiste je, ze tyhle veci da praci vstrebat. Je to proste neco jineho nez
ty centralizovane VCS, ale je to co do pouzitelnosti vyrazne dale.

-- 
Zito


Další informace o konferenci Hw-list