-
1. Pričetek
- 1.1 O nadzoru različic
- 1.2 Kratka zgodovina Git-a
- 1.3 Osnove Git
- 1.4 The Command Line
- 1.5 Git namesitev
- 1.6 Prva namestitev Git-a
- 1.7 Pridobitev pomoči
- 1.8 Povzetek
-
2. Osnove Git
- 2.1 Pridobitev repozitorija Git
- 2.2 Snemanje sprememb repozitorija
- 2.3 Pregled zgodovine pošiljanja
- 2.4 Razveljavljanje stvari
- 2.5 Delo z daljavami
- 2.6 Označevanje
- 2.7 Git aliasi
- 2.8 Povzetek
-
3. Veje Git
- 3.1 Veje na kratko
- 3.2 Osnove vej in združevanja
- 3.3 Upravljanje vej
- 3.4 Potek dela z vejami
- 3.5 Oddaljene veje
- 3.6 Ponovno baziranje (rebasing)
- 3.7 Povzetek
-
4. Git na strežniku
- 4.1 Protokoli
- 4.2 Pridobiti Git na strežnik
- 4.3 Generiranje vaših javnih ključev SSH
- 4.4 Nastavitev strežnika
- 4.5 Prikriti proces Git
- 4.6 Pametni HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tretje osebne opcije gostovanja
- 4.10 Povzetek
-
5. Distribuirani Git
- 5.1 Distribuirani poteki dela
- 5.2 Prispevanje projektu
- 5.3 Vzdrževanje projekta
- 5.4 Povzetek
-
6. GitHub
-
7. Orodja Git
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Povzetek
-
8. Prilagoditev Git-a
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git kljuke
- 8.4 An Example Git-Enforced Policy
- 8.5 Povzetek
-
9. Git in drugi sistemi
- 9.1 Git kot klient
- 9.2 Migracija na Git
- 9.3 Povzetek
-
10. Notranjost Git-a
- 10.1 Napeljava in porcelan
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Povzetek
-
A1. Appendix A: Git v drugih okoljih
- A1.1 Grafični vmesniki
- A1.2 Git v Visual Studiu
- A1.3 Git v Eclipse
- A1.4 Git V Bash-u
- A1.5 Git v Zsh
- A1.6 Git v Powershell-u
- A1.7 Povzetek
-
A2. Appendix B: Vključevanje Git-a v vašo aplikacijo
- A2.1 Git v ukazni vrstici
- A2.2 Libgit2
- A2.3 JGit
-
A3. Appendix C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
10.1 Notranjost Git-a - Napeljava in porcelan
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 Git-a. 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 Git-a (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 Git-a, da je kompleksen in težek se za naučiti.
Datotečni sistem naslavljanja vsebine je izjemno cool, 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 porcelan
Ta knjiga pokriva, kako uporabljati Git s 30 ali nekaj glagoli, kot so checkout
, branch
, remote
itd.
Vendar ker je bil Git prvotno orodje za VCS, ima namesto polnega uporabniku prijaznega VCS-ja kopico glagolov, ki delajo nižje nivojsko delo in so bila načrtovana za veriženje skupaj v stilu UNIX-a oz. klicana iz skript.
Ti ukazi so v splošnem imenovani kot ukazi “plumbing” in bolj prijazni ukazi so imenovani ukazi “porcelain”.
Prvih devet poglavij knjige se ukvarjajo skoraj ekskluzivno z ukazi porcelana. Vendar v tem poglavju se boste ukvarjali večinoma z nižje nivojskimi ukazi napeljave, ker vam dajo dostop do notranjega delovanja Git-a in pomagajo demonstrirati, kako in zakaj Git dela, kar dela. Mnogo teh ukazov ni mišljenih, da so uporabljeni ročno na ukazni vrstici vendar so bolj uporabljeni za gradnjo 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.
Tu je, kako izgleda:
$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/
Tam lahko vidite nekatere ostale datoteke, vendar to je sveži git init
repozitorij - to je, kar vidite privzeto.
Datoteka description
je samo uporabljena s programom GitWeb, tako da ne skrbite o njem.
Datoteka config
vsebuje vaše nastavitvene opcije določenega projekta in direktorij info
drži globalno izključitveno datoteko za ignorirane vzorce, ki jim ne želite slediti v datoteki .gitignore.
Direktorij hooks
vsebuuje vaše skripte kljuk klientne ali strežniške strani, ki so diskutirane v podrobnostih v Git kljuke.
To pusti štiri pomembne vnose: HEAD
in (še za ustvariti) datoteko index
in direktorija objects
in refs
.
Te so deli jedra Git-a.
Direktorij objects
shranjuje vso vsebino za vašo podatkovno bazo, direktorij refs
shranjuje kazalce v objekte pošiljanja v teh podatkih (branches) v datoteki HEAD
, ki kaže na vejo, ki ste jo trenutno izpisali in datoteko index
, kjer Git shranjuje informacije vaše vmesne faze.
Sedaj boste pogledali vsako od teh sekcij v podrobnosti, da vidite, kako Git operira.