Iako ova tema nije ekskluzivno vezana za programiranje zbog cinjenice da ja koristim git iskljucivo zbog pracenja koda stavio sam je ovdje…
Ne znam da li iko koristi neki version tracking sistem, (subversion, bazaar, itd.) meni je git prakticno nezamjenjiva alatka u svakodnevnom radu, na poslu i kuci.
Zbog toga sam htio da ostavim par “naputaka” o git-u mozda nekome bude korisno.
Znaci GIT je distribuirani version tracking sistem. Version tracking sistem je kao sto mu samo ime kaze sistem za pracenje i dokumentovanje promjena ne nuzno u kodu iako je razvijen zbog tog (pracenja razvoja linux kernela).
Postoji dosta drugih version tracking sistema ali GIT i bazaar (koji koristi Ubuntu npr) su dva sistema nove generacije, zasnovani su na distribuiranom konceptu za razliku od npr. Subversiona koji je centralizovani sistem (CVS).
GIT omogucava kreiranje centralnog repozitorija za vas projekat ukoliko zelite imitirati centralizovani sistem u protivnom mozete kreirati svoj repozitorij lokalno a ukoliko neko radi zajedno sa vama na projektu moze klonirati vas repozitorij i raditi na svojim verzijama ili dijelovima pa kasnije spojiti svoj repozitorij sa vasim, centralni repozitorij moze se klonirati kao personal repozitorij na kojem mozete raditi, tako da prakticno imate lokalni svoj repozitorij gdje ce vam GIT pratiti promjene koliko god dugo radili, kada mislite da je vrijeme da postavit kod nazad na centralni repozitorij jednostavno odradite push i git ce sve vase promjene, bez obzira koliko ste novih verzija napravili, poslati na centralni repozitorij koji ce sinkronizovati svoje stanje i imacete pregled svih promjena uz pomoc diff-a, komentare na svakoj promjeni, label-e itd.
GIT takodjer podrzava i branching koji je izuzetno koristan ukoliko planirate raditi nekoliko verzija aplikacije ili necega treceg (npr. jako korisni kod web developera za razlicite verzije sajta).
Logika je sljedeca:
- kada kreirate novi repozitorij sve izmjene koje se desavaju kaze se da se desavaju na master trunk-u (glavnom stablu)
- ako hocete da u nekoj tacki jednostavno kreirate neku varijantu vaseg projekta jednostavno napravite novu granu (branch) i nastavite rad
- sada imate stablo sa dvije grane, master granom i novom granom koju ste imenovali po zelji, nad ove dvije grane mozete paralelno raditi razvoj razlicitih verzija projekta
a GIT ce to sve uredno dokumentovati za vas i pratiti promjene - mozete imati u teoriji neogranicen broj grana tj. paralelnih razvoja projekta koji se granaju u razlicitim tackama po potrebi
- svaku granu mozete spojiti sa bilo kojom drugom granom gdje ce sve promjene i dalje ostati sacuvane ali nastavak razvoja ce biti u onoj grani u koju se stapa
Ovo su osnovne crtice o GIT-u tu ima toliko toga, cak postoji i knjiga o GIT-u.
U nastavku dajem neke osnovne komande za rad sa GIT-om, takodjer postoje razni graficki interface-i za git koji se integrisu u menije i u vecinu vasih IDE-a.
Za help bilo koje komande kucate
Kada ste u direktoriju koji zelite da vam bude repozitorij kucate
dobicete feedback da je novi repozitorij kreiran, ako pogledate vise o komandi init kroz help vidjecete dosta opcija koje mozete navesti kod kreiranja repozitorija npr. da repozitorij bude shared ukoliko vise ljudi radi na projektu pa recimo svi clanovi grupe mogu pristupati repozitoriju itd.
Ova komanda ce sve fajlove u direktoriju koji je repozitorij pripremiti za commit (konacno spasavanje nove izmjene) umijesto . mozete koristiti ime fajla ili fajlova koji su izmijenjeni
Ova komanda konacno spasava izmjenu, git ce pohraniti izmjenu zajedno sa vasim komentarom izmjene i bilo kada u buducnosti ako vam zatreba ta verzija vaseg projekta jednostavno je mozete preuzeti bez problema u toj tacki razvoja bilo kada u buducnosti.
Ako prije nego uradite commit kucate
dobicete listu svih izmjenjenih linija + ispred linije oznacava da je linija nova a - da je izbrisana
Ova komanda ce prikazati detaljnu listu svih izmjena
Ovom komandom kreirate novu granu koja ide paralelno sa master trunk-om koja se zove VerzijaBezVeze, i sve izmjene od ove tacke na dalje su razdvojene za master i za VerzijaBezVeze granu
Ova komanda ce izlistati sve grane u repozitoriju
Ova komanda ce klonirati neki postojeci repozitorij bilo da je na lokalnom racunaru, lokalnoj mrezi ili internetu i kreirati novi repozitorij na lokalnom racunaru na kojem cete moci raditi, kada klonirate repozitorij ukoliko je repozitorij koji ste klonirali tipa centralni on se smatra master repozitorijom i sve promjene koje napravite na svom novom kloniranom repozitoriju mozete u konacnici vratiti u master repozitorij komandom
ovaj sistem rada koristeci push je tipican kod centralizovanih repozitorija ali posto u GIT-u ne mora postojati centralni repozitorij moguce je umijesto push koristiti
gdje prakticno kada napravite izmjene na vasem repozitoriju koji ste klonirali od kolege npr. sada kolega moze nazad spojiti sa svojim repozitorijem koji ste originalno klonirali ili sa
moguce je da vas kolega pogleda samo izmjene koje ste napravili prije nego sto koristi git pull za spajanje sa svojim izvornim repozitorijom.
Toliko za sada, GIT sigurno na prvu djeluje komplikovano ali je odlican sistem na koji sam se toliko navikao da cak i testni kod kada radim napravim sebi repozitorij pa tek onda krenem u kodiranje, ako neko ima pitanja o GIT-u svakako cu pokusati odgovoriti.