Dit boek behandelt primair hoe Git te gebruiken met ongeveer 30 werkwoorden als checkout
, branch
, remote
, enzovoort.
Maar omdat Git initieel een gereedschapkist was voor een versiebeheersysteem in plaats van een compleet gebruikersvriendelijke versibeheersysteem, heeft het een aantal werkwoorden die het grondwerk verzorgen en die ontworpen zijn om op een UNIX manier te worden gekoppeld of vanuit scripts te worden aangeroepen.
Aan deze commando’s worden over het algemeen gerefereerd als plumbing'' (binnenwerk) commando’s, en de meer gebruikersvriendelijke commando’s worden
porcelain'' (koetswerk) genoemd.
Je zult nu wel gemerkt hebben dat de eerste negen hoofdstukken van het boek houden zich vrijwel exclusief bezig met porcelain commando’s. Maar in dit hoofdstuk ga je meerendeels te maken krijgen met de plumbing commando’s op het diepere niveau, omdat deze je toegang geven tot het binnenwerk van Git, en om je te laten zien hoe en waarom Git doet wat het doet. Veel van deze commando’s zijn niet bedoeld voor handmatig gebruik op de commando-regel, maar meer bedoeld als gebruik als onderdeel voor nieuwe gereedschappen en eigengemaakte scripts.
Wanneer je git init
aanroept in een nieuwe of bestaande directory, maakt Git de .git
directory aan, waar vrijwel alles wat Git opslaat en bewerkt aanwezig is.
Als je een backup wilt maken of je repository wilt klonen, geeft het kopieren van deze ene directory naar elders je vrijwel alles wat je nodig hebt.
Deze hele hoofdstuk behandelt eigenlijk het spul dat je in deze directory kunt zien.
Dit is hoe een nieuw-gemaakte .git
-directory er normaalgesproken uitziet:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Afhankelijk van je versie van Git, zou je wat extra inhoud kunnen zien, maar dit is een versie git init
repository — dit is wat je standaard ziet.
Het description
bestand wordt alleen gebruikt door het GitWeb programma, dus maak je er geen zorgen over.
Het config
bestand bevat jouw project-specifieke configuratie opties, en de info
directory bevat een globale exclude bestand voor genegeerde patronen die je niet wilt tracken in een .gitignore bestand.
De hooks
directory bevat de hook-scripts voor de werkstation of server kant, waar we dieper op zijn ingegaan in ch08-customizing-git.asc.
Resten vier belangrijke regels: de HEAD
en (nog te maken) index
bestanden, en de objects
en refs
directories.
Dit zijn de kern-onderdelen van Git.
De objects
directory bevat alle inhoud voor jouw database, de refs
directory bevat verwijzingen naar commit objecten in die gegevens (branches, tags, remotes en zo meer), het HEAD
bestand verwijst naar de branch die je op dit moment uitgecheckt hebt, en het index
bestand is waar Git de informatie over je staging gebied bewaart.
We zullen hierna dieper ingaan op elk van deze onderdelen om te zien hoe Git werkt.