-
1. Aan die slag
- 1.1 Oor Weergawebeheer
- 1.2 Wat is Git?
- 1.3 Die Opdragreël
- 1.4 Git Installeer
- 1.5 Git klaarmaak vir eerste gebruik
- 1.6 Hulp Verkry
- 1.7 Opsomming
-
2. Git Basics
-
3. Git Branching
-
4. Git on the Server
- 4.1 Die Protokolle (The Protocols)
- 4.2 Git op 'n Bediener kry (Getting Git on a Server)
- 4.3 Jou Publieke SSH-sleutel Genereer (Generating Your SSH Public Key)
- 4.4 Die Bediener Opstel (Setting Up the Server)
- 4.5 Git Daemon
- 4.6 Slim HTTP (Smart HTTP)
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Derdeparty-gasheuroplossings (Third-Party Hosting Solutions)
- 4.10 Summary
-
5. Distributed Git
-
6. GitHub
-
7. Git Tools
- 7.1 Hersieningseleksie (Revision Selection)
- 7.2 Interaktiewe Voorbereiding (Interactive Staging)
- 7.3 Bêre en Skoonmaak (Stashing and Cleaning)
- 7.4 Ondertekening van Jou Werk (Signing Your Work)
- 7.5 Soek (Searching)
- 7.6 Herskryf van Geskiedenis (Rewriting History)
- 7.7 Reset Ontmystifiseer (Reset Demystified)
- 7.8 Gevorderde Saamsmelting (Advanced Merging)
- 7.9 Rerere
- 7.10 Ontfouting met Git (Debugging with Git)
- 7.11 Submodules
- 7.12 Bundeling (Bundling)
- 7.13 Vervang (Replace)
- 7.14 Die Stoor van Aanmeldbewyse (Credential Storage)
- 7.15 Summary
-
8. Customizing Git
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
10.1 Git Internals - Loodgieterswerk en Porselein (Plumbing and Porcelain)
You may have skipped to this chapter from a much earlier chapter, or you may have gotten here after sequentially reading the entire book up to this point — in either case, this is where we’ll go over the inner workings and implementation of Git. We found that understanding this information was fundamentally important to appreciating how useful and powerful Git is, but others have argued to us that it can be confusing and unnecessarily complex for beginners. Thus, we’ve made this discussion the last chapter in the book so you could read it early or later in your learning process. We leave it up to you to decide.
Now that you’re here, let’s get started. First, if it isn’t yet clear, Git is fundamentally a content-addressable filesystem with a VCS user interface written on top of it. You’ll learn more about what this means in a bit.
In the early days of Git (mostly pre 1.5), the user interface was much more complex because it emphasized this filesystem rather than a polished VCS. In the last few years, the UI has been refined until it’s as clean and easy to use as any system out there; however, the stereotype lingers about the early Git UI that was complex and difficult to learn.
The content-addressable filesystem layer is amazingly cool, so we’ll cover that first in this chapter; then, you’ll learn about the transport mechanisms and the repository maintenance tasks that you may eventually have to deal with.
Loodgieterswerk en Porselein (Plumbing and Porcelain)
Hierdie boek dek hoofsaaklik hoe om Git te gebruik met so 30 of wat subopdragte soos checkout, branch, remote, ensovoorts.
Maar omdat Git aanvanklik 'n gereedskapstel vir 'n weergawebeheerstelsel was in plaas van 'n volledige gebruikersvriendelike WBS (VCS), het dit 'n aantal subopdragte wat laevlak-werk doen en ontwerp is om op 'n UNIX-manier aan mekaar gekoppel te word of vanuit skrippe geroep te word.
Daar word oor die algemeen na hierdie opdragte verwys as Git se “loodgieters”-opdragte (“plumbing”), terwyl die meer gebruikersvriendelike opdragte “porselein”-opdragte (“porcelain”) genoem word.
Soos jy teen hierdie tyd sal opgemerk het, handel die eerste nege hoofstukke van hierdie boek byna uitsluitlik oor porselein-opdragte. Maar in hierdie hoofstuk sal jy meestal met die laervlak loodgieters-opdragte te doen kry, want hulle gee jou toegang tot die innerlike werking van Git, en help demonstreer hoe en hoekom Git doen wat hy doen. Baie van hierdie opdragte is nie bedoel om handmatig op die opdragreël gebruik te word nie, maar eerder om as boublokke vir nuwe hulpmiddels en pasgemaakte skrippe gebruik te word.
Wanneer jy git init in 'n nuwe of bestaande gids uitvoer, skep Git die .git-gids, wat is waar byna alles wat Git stoor en manipuleer, geleë is.
As jy jou bewaarplek wil rugsteun of kloon, gee die kopiëring van hierdie enkele gids na 'n ander plek jou byna alles wat jy nodig het.
Hierdie hele hoofstuk handel basies oor wat jy in hierdie gids kan sien.
Hier is hoe 'n nuut-geïnisialiseerde .git-gids tipies lyk:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Afhangende van jou weergawe van Git, sal jy dalk bykomende inhoud daar sien, maar hierdie is 'n vars git init-bewaarplek — dit is wat jy by verstek sien.
Die description-lêer word slegs deur die GitWeb-program gebruik, so moenie jou daaroor bekommer nie.
Die config-lêer bevat jou projekspesifieke konfigurasie-opsies, en die info-gids hou 'n globale uitsluitingslêer (exclude file) vir geïgnoreerde patrone wat jy nie in 'n .gitignore-lêer wil naspoor nie.
Die hooks-gids bevat jou kliënt- of bedienerkant haakskrippe (hook scripts), wat in detail in Git-hake (Git Hooks) bespreek word.
Dit laat vier belangrike inskrywings oor: die HEAD en (nog te skep) index-lêers, en die objects- en refs-gidse.
Dit is die kernonderdele van Git.
Die objects-gids stoor al die inhoud vir jou databasis, die refs-gids stoor wysers na vasleggingsobjekte in daardie data (takke, merkers, remotes en meer), die HEAD-lêer wys na die tak wat jy tans uitgetrek (checked out) het, en die index-lêer is waar Git jou voorbereidingsarea (staging area) inligting stoor.
Jy sal nou in detail na elk van hierdie afdelings kyk om te sien hoe Git werk.