Git
Chapters ▾ 2nd Edition

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.

  1. Je kunt een lokale directory nemen die nog niet onder versiebeheer zit, en deze in een Git repository veranderen, of

  2. 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.

scroll-to-top