Git
Chapters ▾ 2nd Edition

10.1 Notranjost Gita - Napeljava in keramika

Morda ste preskočili na to poglavje iz prejšnjega poglavja ali ste morda prišli sem po branju preostanka knjige - v katerem koli primeru, to je, kjer bomo pokrili notranje delovanje in implementacijo Gita. Ugotovili smo, da je učenje teh informacij v osnovi pomembno za razumevanje, kako uporaben in močan Git je, vendar ostali so nam trdili, da je lahko zmedeno in nepotrebno kompleksno za začetnike. Vseeno, smo naredili to diskusijo v zadnjem poglavju knjige, da ga lahko preberete prej ali kasneje v vašem procesu učenja. Odločitev prepuščamo vam.

Sedaj ko ste tu, pričnimo. Najprej, če ni še dovolj jasno, Git je v bistvu vsebinsko naslavljajoč datotečni sistem z VCS uporabniškim vmesnikom napisanim na vrhu njega. Nekoliko se boste o tem naučili, kaj to pomeni.

V zgodnjih dnega Gita (večinoma pred 1.5) je bil uporabniški vmesnik veliko bolj kompleksen, ker je povdarjal ta datotečni sistem namesto poliranega VCS-ja. V zadnjih nekaj letih je bil UI rafiniran dokler ni postal kakor čist in enostaven za uporabo od katerega koli sistema na voljo; vendar pogostokrat stereotip ostaja o zgodnjem UI Gita, da je kompleksen in težek se za naučiti.

Datotečni sistem naslavljanja vsebine je izjemno kul, torej bomo pokrili prvo to v tem poglavju; nato se boste naučili o mehanizmih transporta in opravilih vzdrževanja repozitorija, s katerimi se boste eventuelno morali ukvarjati.

Napeljava in keramika

Ta knjiga pokriva, kako uporabljati Git s 30 ali nekaj podukazov, kot so checkout, branch, remote itd. Vendar ker je bil Git prvotno orodje za nadzor različic namesto polnega uporabniku prijazenega VCS-ja, ima kopico podukazov, ki delajo nižje nivojsko delo in so bili načrtovani za veriženje skupaj v stilu UNIXa oz. klicani iz skript. Ti ukazi so v splošnem imenovani kot Gitovi ukazi “napeljave”, medtem ko so bolj uporabniku prijazni ukazi imenovani ukazi “keramika”.

Kot ste do sedaj opazili, se prvih devet poglavij knjige ukvarja skoraj ekskluzivno z ukazi keramike. Vendar v tem poglavju se boste večinoma ukvarjali z nižje nivojskimi ukazi napeljave, ker vam dajo dostop do notranjega delovanja Gita in pomagajo demonstrirati, kako in zakaj Git dela, kar dela. Mnogo teh ukazov ni mišljenih, da so uporabljeni ročno v ukazni vrstici, vendar so namenjeni bolj gradnji blokov za nova orodja in skripte po meri.

Ko poženete ukaz git init v novem obstoječem direktoriju, Git ustvari direktorij .git, kjer je locirano skoraj vse, kar Git shranjuje in manipulira. Če želite iti nazaj ali klonirati vaš repozitorij, kopirati ta posamezni direktorij nekam drugam, vam da skoraj vse, kar potrebujete. To celotno poglavje se v osnovi ukvarja s stvarmi v tem direktoriju. Takole običajno izgleda novo inicializirani direktorij .git:

$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/

Odvisno od vaše verzije Git lahko tam vidite tudi nekatere ostale vsebine, vendar to je sveži git init repozitorij - to je, kar vidite privzeto. Datoteko description uporablja samo program GitWeb, tako da ne skrbite o njej. Datoteka config vsebuje vaše nastavitvene opcije določenega projekta in direktorij info vsebuje globalno izključitveno datoteko za ignorirane vzorce v datoteki .gitignore, katerim ne želite slediti. Direktorij hooks vsebuje vaše skripte kljuk strani odjemalca ali strežnika, katere so diskutirane v podrobnostih v Kljuke Git.

To pusti štiri pomembne vnose: HEAD in (še za ustvariti) datoteka index ter direktorija objects in refs. To so osrednji deli Gita. Direktorij objects hrani vso vsebino vaše podatkovne baze, direktorij refs shranjuje kazalce na objekte potrditev v teh podatkih (veje, oznake, daljave in še več), datoteko HEAD, ki kaže na vejo, ki ste jo trenutno izpisali in datoteko index, kjer Git shranjuje informacije vašega področja priprave. Sedaj boste pogledali vsako od teh sekcij v podrobnosti, da vidite, kako Git operira.

scroll-to-top