-
1. Aan de slag
- 1.1 Over versiebeheer
- 1.2 Een kort historisch overzicht van Git
- 1.3 Wat is Git?
- 1.4 De commando-regel
- 1.5 Git installeren
- 1.6 Git klaarmaken voor eerste gebruik
- 1.7 Hulp krijgen
- 1.8 Samenvatting
-
2. Git Basics
-
3. Branchen in Git
- 3.1 Branches in vogelvlucht
- 3.2 Eenvoudig branchen en mergen
- 3.3 Branch-beheer
- 3.4 Branch workflows
- 3.5 Branches op afstand (Remote branches)
- 3.6 Rebasen
- 3.7 Samenvatting
-
4. Git op de server
- 4.1 De protocollen
- 4.2 Git op een server krijgen
- 4.3 Je publieke SSH sleutel genereren
- 4.4 De server opzetten
- 4.5 Git Daemon
- 4.6 Slimme HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Hosting oplossingen van derden
- 4.10 Samenvatting
-
5. Gedistribueerd Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revisie Selectie
- 7.2 Interactief stagen
- 7.3 Stashen en opschonen
- 7.4 Je werk tekenen
- 7.5 Zoeken
- 7.6 Geschiedenis herschrijven
- 7.7 Reset ontrafeld
- 7.8 Mergen voor gevorderden
- 7.9 Rerere
- 7.10 Debuggen met Git
- 7.11 Submodules
- 7.12 Bundelen
- 7.13 Vervangen
- 7.14 Het opslaan van inloggegevens
- 7.15 Samenvatting
-
8. Git aanpassen
- 8.1 Git configuratie
- 8.2 Git attributen
- 8.3 Git Hooks
- 8.4 Een voorbeeld van Git-afgedwongen beleid
- 8.5 Samenvatting
-
9. Git en andere systemen
- 9.1 Git als een client
- 9.2 Migreren naar Git
- 9.3 Samenvatting
-
10. Git Binnenwerk
- 10.1 Binnenwerk en koetswerk (plumbing and porcelain)
- 10.2 Git objecten
- 10.3 Git Referenties
- 10.4 Packfiles
- 10.5 De Refspec
- 10.6 Uitwisseling protocollen
- 10.7 Onderhoud en gegevensherstel
- 10.8 Omgevingsvariabelen
- 10.9 Samenvatting
-
A1. Bijlage A: Git in andere omgevingen
- A1.1 Grafische interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in Eclipse
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Samenvatting
-
A2. Bijlage B: Git in je applicaties inbouwen
- A2.1 Commando-regel Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bijlage C: Git Commando’s
- A3.1 Setup en configuratie
- A3.2 Projecten ophalen en maken
- A3.3 Basic Snapshotten
- A3.4 Branchen en mergen
- A3.5 Projecten delen en bijwerken
- A3.6 Inspectie en vergelijking
- A3.7 Debuggen
- A3.8 Patchen
- A3.9 Email
- A3.10 Externe systemen
- A3.11 Beheer
- A3.12 Binnenwerk commando’s (plumbing commando’s)
2.1 Git Basics - Een Git repository verkrijgen
Als je slechts één hoofdstuk kunt lezen om met Git aan de slag te gaan, dan is deze het. In dit hoofdstuk worden alle basiscommando’s behandeld die je nodig hebt om het leeuwendeel van de dingen te doen waarmee je uiteindelijk je tijd met Git zult doorbrengen. Als je dit hoofdstuk doorgenomen hebt, zul je een repository kunnen configureren en initialiseren, bestanden beginnen en stoppen te volgen en veranderingen te stagen en committen. We laten ook zien hoe je Git kunt instellen zodat het bepaalde bestanden en bestandspatronen negeert, hoe je vergissingen snel en gemakkelijk ongedaan kunt maken, hoe je de geschiedenis van je project kan doorlopen en wijzigingen tussen commits kunt zien, en hoe je kunt pushen naar en pullen van niet lokale repositories.
Een Git repository verkrijgen
Je kunt op twee manieren een Git project verkrijgen.
-
Je kunt een lokale directory nemen die nog niet onder versiebeheer zit, en deze in een Git repository veranderen, of
-
Je kunt een bestaande Git repository klonen (clone) van een andere plek
Een repository initialiseren in een bestaande directory
Als je een project directory hebt, dat op dit moment nog niet onder versiebeheer staat en je wilt het met Git beheren, moet je eerst in die project directory gaan. Als je dit nog nooit eerder gedaan hebt, zit het er iets anders uit afhankelijk van het systeem waaronder je werkt:
voor Linux:
$ cd /home/user/my_project
voor macOS:
$ cd /Users/user/my_project
voor Windows:
$ cd /c/user/my_project
en type:
$ git init
Dit maakt een nieuwe subdirectory met de naam .git
aan, die alle noodzakelijke repository bestanden bevat, een Git repository raamwerk.
Op dit moment wordt nog niets in je project gevolgd.
(Zie Git Binnenwerk voor meer informatie over welke bestanden er precies in de .git
directory staan, die je zojuist gemaakt hebt.)
Als je de versies van bestaande bestanden wilt gaan beheren (in plaats van een lege directory), dan zul je die bestanden moeten beginnen te tracken en een eerste commit doen.
Dit kun je bereiken door een paar git add
commando’s waarin je de te volgen bestanden specificeert, gevolgd door een git commit
:
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
We zullen zodadelijk beschrijven wat deze commando’s doen. Op dit punt heb je een Git repository met gevolgde (tracked) bestanden en een initiële commit.
Een bestaande repository klonen
Als je een kopie wilt van een bestaande Git repository, bijvoorbeeld een project waaraan je wilt bijdragen, dan is git clone
het commando dat je nodig hebt.
Als je bekend bent met andere versie-beheersystemen zoals Subversion, dan zal het je opvallen dat het commando "clone" is en niet "checkout".
Dit is een belangrijk onderscheid: in plaats van alleen maar een werk-kopie, ontvangt Git een volledige kopie van bijna alle gegevens die de server heeft.
Elke versie van ieder bestand in de hele geschiedenis van een project wordt standaard binnengehaald als je git clone
aanroept.
In feite kun je, als de schijf van de server kapot gaat, een kloon van een willekeurig werkstation gebruiken om de server terug in de status te brengen op het moment van klonen (al zou je wel wat hooks aan de kant van de server en dergelijke verliezen, maar alle versies van alle bestanden zullen er zijn; zie Git op een server krijgen voor meer informatie).
Je kloont een repository met git clone <url>
.
Bijvoorbeeld, als je de linkbare Git bibliotheek genaamd libgit2 wilt klonen, kun je dit als volgt doen:
$ git clone https://github.com/libgit2/libgit2
Dat maakt een directory genaamd libgit2
aan, initialiseert hierin een .git
directory, haalt alle data voor die repository binnen en doet een checkout van een werk-kopie van de laatste versie.
Als je in de nieuwe libgit2
directory gaat kijken zal je de project bestanden vinden, klaar om gebruikt of aan gewerkt te worden.
Als je de repository in een directory met een andere naam dan libgit2
wilt klonen, dan kun je dit met een extra argument meegeven met de nieuwe directorynaam:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Dat commando doet hetzelfde als het vorige, maar dan heet de doeldirectory mylibgit
.
Git heeft een aantal verschillende transport protocollen die je kunt gebruiken.
Het vorige voorbeeld maakt gebruik van het https://
protocol, maar je kunt ook git://
of gebruiker@server:/pad/naar/repo.git
tegenkomen, dat het SSH transport protocol gebruikt.
Git op een server krijgen zal alle beschikbare opties introduceren die de server kan aanbieden om je toegang tot de Git repositories te geven, met daarbij de voors en tegens van elk.