Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
tree: 9268d9e1f6
Fetching contributors…

Cannot retrieve contributors at this time

executable file 70 lines (46 sloc) 3.424 kB
\chapter*{"Higijena" repozitorija}
\addcontentsline{toc}{chapter}{"Higijena" repozitorija}
Naš repozitorij je naš životni prostor i s njime živimo dio dana.
Kao što se trudimo držati stan urednim, tako bi trebalo i s našim virtualnim prostorima.
Preko tjedna, kad rano ujutro odlazimo na posao i vraćamo se kasnije popodne, se ponekad desi da nam se u stanu nagomila robe za pranje.
No, nekoliko puta tjedno treba uzeti pola sata vremena i počistiti nered koji je zaostao.
Tako i s repozitorijem.
Ima nekoliko stvari na koje bi trebali pripaziti.
\subsection*{Grane}
\addcontentsline{toc}{subsection}{Grane}
Nemojte si dopustiti da grane u vašem repozitoriju izgledaju ovako "zbrčkano":
\input{graphs/cirkus}
Iako nam git omogućuje da imamo neograničen broj grana, ljudski um nije sposoban vizualizirati si više od\footnote{Barem moj nije, ako je vaš izuzetak, preskočite ovo.} 5-10.
Kako stvaramo nove grane -- dešava se da imamo one u kojima smo počeli neki posao i kasnije odlučili da nam ne treba.
Ili smo napravili posao, \emph{merge}ali u \verb+master+, ali nismo obrisali granu.
Nađemo li se s više od 10-15 grana -- \textbf{sigurno} je dio njih tu samo zato što smo ih zaboravili obrisati.
U svakom slučaju, predlažem vam da svakih par dana pogledate malo po lokalnim (a i udaljenim granama) i provjerite one koje više ne koristite.
Ukoliko nismo sigurni je li nam u nekoj grani ostala možda još kakva izmjena koju treba vratiti u \verb+master+, postupak je sljedeći:
\gitoutputcommand{git checkout neka-grana\\git merge master}
\dots{}da bismo preuzeli sve izmjene iz master, tako da stanje bude ažurno.
I sad\dots
\gitoutputcommand{git diff master}
\dots{}da bismo provjerili koje su točno izmjene ostale.
Ako je prazno -- nema razlika i možemo brisati.
Ako nije -- \textbf{ima} izmjena i sad se sami odlučite jesu li te izmjene nešto važno što ćete nastaviti razvijati ili nešto što možemo zanemariti i obrisati tu granu.
\subsection*{Git gc}
\addcontentsline{toc}{subsection}{Git gc}
Druga stvar koju se preporuča ima veze s onim našim \verb+.git/objects+ direktorijem kojeg smo spominjali u "Ispod haube" poglavlju.
Kao što znamo, svaki \emph{commit} ima svoju referencu i svoj objekt u tom direktoriju.
Što se dešava sa zadnjim objektom kad napravimo \verb+git commit --amend+.
Podsjetimo se, s tom komandom mijenjamo naš zadnji \emph{commit}.
Grafički:
\input{graphs/amend}
Tako barem izgleda, ali nije baš doslovno tako.
Ono što git interno napravi je da doda \textbf{novi} objekt (\emph{f'}) i na njega pomiče referencu \verb+HEAD+ (koja je do tada gledala na \emph f).
Međutim, objekt koji je prije bio zadnji \emph{commit} \textbf{ostaje u} \verb+.git/object+ \textbf{direktoriju}.
I one se više nikad neće koristiti.
Puno tih \verb+git commit --amend+ posljedično ostavlja puno takvog "smeća" u repozitoriju.
To vrijedi i za neke druge operacije kao brisanje grana ili rebase.
Git to čini da bi tekuće operacije bilo što je brže moguće.
Čišćenje takvog smeća (\emph{garbage collection} iliti \emph{gc}) ostavlja za kasnije.
Naredba je \verb+git gc+:
\input{git_output/git_gc}
Tu naredbu treba izvršiti s vremena na vrijeme.
Osim \verb+gc+, postoji još nekoliko sličnih naredbi kao \verb+git repack+, \verb+git prune+, no one su manje važne za početnika.
Ako vas zanima -- \verb+git help+ je uvijek tu da pomogne.
Jump to Line
Something went wrong with that request. Please try again.