Hoofdstuk 7
Remotes, zonder server
Wat een remote werkelijk is
Je kunt Git met een andere repository gebruiken zonder internet. In dit hoofdstuk blijven alle repositories binnen dezelfde oefenwerkruimte. De werking is echt; alleen de afstand tussen de repositories is klein. De afbeelding toont één geschiedenis in drie lokale repositories: links een werkrepository (“working repository”) met bestanden en geschiedenis, in het midden gedeelde geschiedenis zonder werkboom (“bare repository”) en rechts een kloon (“clone”).

Begin met de repository die je al hebt
De klaargezette map garden is een gewone werkrepository. Die heeft vastgelegde geschiedenis en een werkboom die je kunt bewerken. Begin met opdrachten die je al kent:
pwd
git status
git log
Je hoort in /workspace/garden te staan. De werkboom is schoon en main eindigt met de commit die plants.txt heeft toegevoegd.
Een remote is een andere repository
Een remote is een opgeslagen naam en locatie voor een andere Git-repository. Git kan commits, branchposities en andere refs met die repository uitwisselen. De andere repository kan bij een hostingdienst staan, op een server via een netwerk, op een verwijderbare schijf of in de map ernaast. “Remote” beschrijft de relatie tussen repositories, niet de belofte dat er internet bij komt kijken.
In dit hoofdstuk bouwen we de volgende lokale opstelling:
/workspace/
├── garden/ ordinary working repository where you make a later commit
├── origin.git/ bare repository that stores shared history
└── garden-copy/ ordinary clone used to observe and fetch that history
garden en garden-copy krijgen werkbomen. origin.git wordt een bare repository: een Git-repository die geschiedenis en refs bewaart zonder een bewerkbare set projectbestanden uit te checken. Dat maakt hem bruikbaar als uitwisselpunt. Niemand bewerkt bestanden in zijn werkboom, want hij heeft geen werkboom.
De opdracht git init --bare maakt zo’n repository. De opdracht git clone maakt een nieuwe werkrepository vanuit een bestaande repository. Je gebruikt beide in de volgende lessen, nadat de onderdelen van elke opdracht zijn uitgelegd.
Drie namen die je uit elkaar moet houden
Houd tijdens het opbouwen deze drie namen uit elkaar:
mainis een lokale branch in de repository waarin je staat.originwordt de gebruikelijke opgeslagen naam voor een andere repository.origin/mainwordt een remote-tracking ref: een lokale registratie van waarmainvanoriginbij de laatste uitwisseling stond.
De volgende lessen maken die namen en laten zien hoe ze verschuiven. Voor nu is het onderscheid voldoende: main is waar je werkt, origin benoemt een andere repository en origin/main geeft onthouden informatie weer in plaats van jouw bewerkbare branch te worden.
Wat maakt origin.git in dit hoofdstuk een remote van garden?
Het bruikbare denkmodel is repository naar repository. Een host kan opslag en samenwerking rond dat model bieden, maar verandert niet wat een Git-remote is.