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
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 ch10-git-internals.asc 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.
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 ch04-git-on-the-server.asc 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.
ch04-git-on-the-server.asc 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.