Če ste eden od milijonov v skupnosti razvijalcev, potem je najverjetneje že slišalo za koncept nadzora različic. Je močno orodje ali sistem, ki vam pomaga skrbeti za svoje delo in vam omogoča hitro gibanje po datotekah, dokumentih in drugih zbirkah informacij, povezanih s projektom. Na trgu obstaja veliko orodij za tovrstne zaposlitve, tako lastniške kot odprte kode. Git je eden najbolj priljubljenih in pogosto uporabljanih sistemov za nadzor različic na svetu, danes pa se Git za nadzor različic zanaša na osupljivo število projektov. Git je brezplačni in odprtokodni sistem za nadzor nad različicami, zasnovan za spremljanje sprememb v izvorni kodi med razvojem programske opreme.
Projekt Git predstavlja struktura podatkov, imenovana repozitorij, v kateri so shranjene vse informacije, povezane s projektom, vključno s celotno zgodovino projekta od njegove ustanovitve. Sledi vsem spremembam datotek skozi čas in gradi časovnico med nadaljevanjem projekta. Repozitorij je sestavljen iz niza posameznih posnetkov vsebine projekta - zbiranja datotek in skladišč - imenovanih obrezi. Ko želite razvoj svojega projekta deliti s svetom, ga morate potisniti na daljinec, do katerega imate dostop do pisanja. Vaše lokalne podružnice se ne sinhronizirajo samodejno z oddaljenimi skladišči - izrecno morate potisniti veje, ki jih želite dati v skupno rabo.
Git svoje podatke obravnava bolj kot niz posnetkov, kot mini datotečni sistem ali različice projekta, imenovanega commits. Vsakič, ko kadar koli zavežete ali shranite stanje svojega projekta, Git v bistvu naredi posnetek, kako so vaše datoteke trenutno videti, in shrani sklic na ta posnetek. Objekt zaveze vsebuje metapodatke za vsako spremembo, ki je bila opravljena v skladišču, vključno z avtorjem, dokumentom, datumom potrditve in sporočilom dnevnika. Vsak zagon kaže na drevesni objekt, ki zajame stanje odlagališča v tistem trenutku, ko je bil zagon izveden, vse v enem celotnem posnetku. Ko medsebojno spreminjate kodo, ustvarite peščico obveznosti - ločeno zavezo za vsako spremembo. Git dodeli vsakemu zavezujoč ID, ki sledi, kaj, kdaj in kdo od sprememb, ki ste jih naredili.
Vsak razvijalci imajo svoje zasebno shrambo za spremljanje njihovih sprememb. Spremembe naredite lokalno in ko ste pripravljeni, da jih delite z drugimi razvijalci, jih potisnete nazaj v skladišče, ki ga delite vsi. Spremembe shrani spremembe, ki ste jih naredili samo v lokalnem skladišču, ne pa tudi v oddaljenem skladišču. Vaše obveznosti se ne sinhronizirajo samodejno z oddaljenim skladiščem - morate izrecno potisniti obveznosti, ki jih želite deliti. Ko uporabite ukaz push, spremenite spremembe v zgornjem skladišču. Vsak odprtokodni projekt ima svoj način sprejemanja sprememb. Nekateri projekti uporabljajo popolnoma porazdeljen sistem nadzora različic, kjer lahko samo ena oseba potisne spremembe v glavno repozitorij, medtem ko obstaja skupni model repozitorija, kjer se lahko vsi razvijalci potisnejo v deljeno skladišče.
- Potiskanje pride po storitvi. Git zapisi zapisov in spremlja spremembe v skladišču z vsako točko zaviranja na drevesni objekt, ki zajame stanje skladišča v tistem trenutku, ko je bilo zagon izvedeno, vse v enem celotnem posnetku. Toda zaveze shrani spremembe samo v lokalno skladišče, ne pa tudi v oddaljeno skladišče. Git push posodobi vaše zavezane spremembe in vam omogoča, da jih pošljete v oddaljeno skladišče, kjer lahko do njih dostopajo vsi razvijalci. Ko uporabite ukaz push, vaše spremembe preprosto posodobi v zgornjem skladišču.
- Storitve Git so lokalnega pomena in so zabeležene samo na računalniku, na katerem se storitve dejansko zgodijo. Ukaz "git commit" se uporabi, da Git pove, da shrani svoje spremembe v lokalno skladišče, Git-u pa morate posebej povedati, katere spremembe želite vključiti v odobritev, preden uporabite ukaz "git commit". Z ukazom "git push" lahko potisnete predmete iz lokalnega skladišča v oddaljeno skladišče. Ukaz "push" posodobi nove lokalne zaveze na oddaljenem strežniku. Potisk ima dva argumenta: oddaljeno ime (izvor) in ime veje (glavni).
Na kratko, prevzemanje je temeljna enota sprememb v Gitu. Za razliko od drugih centraliziranih modelov krmiljenja različic, Git svoje podatke obravnava bolj kot niz posnetkov, ki se imenujejo commits. So kot posnetek celotne vsebine repozitorija, skupaj z vsemi informacijami, povezanimi s projektom in odnosom tega stanja skladišča do drugih zabeleženih stanj, saj se je vsebina sčasoma razvijala. Objekt zaveze vsebuje metapodatke za vsako spremembo, ki je bila opravljena v skladišču, vključno z avtorjem, zaveznikom, datumom zaveze in sporočilom dnevnika. Toda zaveza shrani spremembe samo v lokalno skladišče, ne pa tudi v oddaljeno skladišče. Git push posodobi vaše zavezane spremembe in vam omogoča, da jih pošljete v oddaljeno skladišče, kjer lahko do njih dostopajo vsi razvijalci.