forked from tkrajina/uvod-u-git
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manje-koristene-naredbe.tex
83 lines (57 loc) · 4.67 KB
/
manje-koristene-naredbe.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
\chapter*{Manje korištene naredbe}
\addcontentsline{toc}{chapter}{Manje korištene naredbe}
U ovom poglavlju ćemo proći neke rijeđe korištene naredbe gita.
Neke od njih ćete koristiti jako rijetko, a neke možda i nikad.
Zato nije ni potrebno da ih detaljno razumijete, važno je samo da znate da one postoje.
Ovdje ćemo ih samo nabrojati i generalno opisati čemu služe, a ako zatrebaju -- lako ćete saznati kako se koriste s \verb+git help+.
\section*{Filter-branch}
\addcontentsline{toc}{section}{Filter-branch}
Naredba s kojom možemo promijeniti cijelu povijest projekta.
Na primjer, \emph{commit}ali smo u projekt s našom privatnom email adresom, i sad bismo htjeli promijeniti sve naše \emph{commit}ove tako da sadrže službeni email.
Slično, možemo mijenjati datume \emph{commit}ova, dodati datoteke ili obrisati datoteke iz \emph{commit}ova, i sl.
Trebamo imati na umu da tako promijenjeni repozitorij ima različite SHA1 stringove \emph{commit}ova.
To znači da, ako naredbu primijenimo na jednom repozitoriju, drugi distribuirani repozitorij istog projekta \textbf{više neće imati zajedničku povijest s našim}.
Najbolje je to učiniti na našem privatnom repozitoriju kad smo sigurni da nitko drugi nema klon repozitorija ili ako na projektu radimo s točno određenim krugom ljudi.
U ovom drugom slučaju -- dogovorimo se s njima da svi iz\emph{commit}aju svoje grane u naš repozitorij, izvršiti ćemo \verb+git filter-branch+ i nakon toga zamolimo ih da sad obrišu i iznova kloniraju repozitorij.
\section*{Shortlog}
\addcontentsline{toc}{section}{Shortlog}
\verb+git shortlog+ ispisuje rekapitulaciju \emph{commit}ova prema autoru.
\section*{Format-patch}
\addcontentsline{toc}{section}{Format-patch}
Koristi se kad šaljemo \emph{patch} emailom\footnote{Čini mi se da je to danas jako rijedak običaj.}.
Na primjer, napravili smo lokalno nekoliko \emph{commit}ova i sad ih želimo poslati emailom vlasniku udaljenog projekta.
S \verb+git format-patch+ ćemo pripremiti emailove sa svim potrebnim detaljima o \emph{commit}ovima (odnosno naše \emph{patch}eve).
\section*{Am}
\addcontentsline{toc}{section}{Am}
Radnja suprotna onome što radimo s \verb+git format-patch+.
U ovom slučaju smo \textbf{mi} oni koji smo primili \emph{patch}eve emailom, i sad ih treba "pretvoriti" u \emph{commit}ove.
To se radi s \verb+git am+.
\section*{Fsck}
\addcontentsline{toc}{section}{Fsck}
\verb+git fsck+ provjerava ispravnost nekog objekta ili cijelog repozitorija.
Ukoliko nešto ne valja s SHA1 čvorovima (\emph{commit}ovima) ili je repozitorij "koruptiran"\footnote{Može se dogoditi, na primjer, ako je nestalo struje dok ste s repozitorijem radili neku radnju koja zahtijeva puno snimanja po disku.} -- ova naredba će naći sve nekonzistentnosti.
\section*{Instaweb}
\addcontentsline{toc}{section}{Instaweb}
\verb+git instaweb+ pokreće jednostavno web sučelje za pregled povijesti repozitorija.
\section*{Name-rev}
\addcontentsline{toc}{section}{Name-rev}
Pretpostavimo da je \verb+e0d22c0608ca0867b501f4890b4155486e8896b8+ \emph{commit} u našem repozitoriju.
Gitu je to dovoljno, ali svima nama bi puno više značilo da nam netko kaže "peti \emph{commit} prije verzije \verb+1.0+" ili "drugi \emph{commit} nakon što smo \emph{branch}ali granu \verb+test+".
Za to postoji \verb+git name-rev+.
Na primjer, meni \verb+git name-rev e0d22+ ispisuje \verb+manje-koristene-naredbe~6+, što znači da je to šesti \emph{commit} prije kraja grane \verb+manje-koristene-naredbe+.
\section*{Stash}
\addcontentsline{toc}{section}{Stash}
Želite li se prebaciti u drugu granu, a imate tekućih izmjena, git vam to ponekad neće dopustiti.
S \verb+git stash+ možete privremeno spremiti izmjene koje ste radili u nekoj grani.
Kad se kasnije vratite na prvotnu granu, prethodno spremljene izmjene možete vratiti nazad.
\section*{Submodule}
\addcontentsline{toc}{section}{Submodule}
Sa \verb+git submodule+ možemo u svoj repozitorij dodati neki drugi repozitorij.
Jednostavno, u neki direktorij će se klonirati cijeli taj "drugi" repozitorij, a naš repozitorij će točno upamtiti SHA1 od željenog podrepozitorija.
Treba napomenuti da je s najnovijom verzijom gita uvedena jedna slična (za neke scenarije i bolja) naredba: \verb+git subtree+, ali to još nije ušlo u široku upotrebu\footnote{U jednoj od sljedećih verzija ove knjige će nova naredba vjerojatno dobiti cijelo poglavlje.}.
\section*{Rev-list}
\addcontentsline{toc}{section}{Rev-list}
Rev list za zadane \emph{commit} objekte daje spisak svih \emph{commit}ova koji su dostupni.
Ovu naredbu ćete vjerojatno koristiti tek ako radite neki skriptu (ili git \emph{plugin}), a vrlo rijetko direktno u komandnoj liniji.
%\section*{}
%\addcontentsline{toc}{section}{}