Wat is GIT
Last updated
Last updated
De kijk van Git op data kan worden uitgelegd als een reeks momentopnames (snapshots) van een miniatuur-bestandssysteem. Elke keer dat je commit (de status van je project in Git opslaat) wordt er als het ware foto van de toestand van al je bestanden op dat moment genomen en wordt er een verwijzing naar die foto opgeslagen. Git slaat ongewijzigde bestanden niet elke keer opnieuw op, alleen een verwijzing naar het eerdere identieke bestand dat het eerder al opgeslagen had.
Voor de meeste handelingen in Git zijn alleen lokale bestanden en hulpmiddelen nodig. Dit betekent ook dat er maar heel weinig is dat je niet kunt doen als je offline bent.
Alles in Git krijgt een controlegetal (checksum) voordat het wordt opgeslagen en er wordt later met dat controlegetal naar gerefereerd. Dat betekent dat het onmogelijk is om de inhoud van een bestand of directory te veranderen zonder dat Git er weet van heeft.
Bijna alles wat je in Git doet, leidt tot toevoeging van data in de Git database. Het is daarom erg moeilijk om het systeem iets te laten doen wat je niet ongedaan kan maken.
Git heeft drie hoofdtoestanden waarin bestanden zich kunnen bevinden: gecommit (commited), gewijzigd (modified) en voorbereid voor een commit (staged):
Committed houdt in dat alle data veilig opgeslagen is in je lokale database.
Modified betekent dat je het bestand hebt gewijzigd maar dat je nog niet naar je database gecommit hebt.
Staged betekent dat je al hebt aangegeven dat de huidige versie van het aangepaste bestand in je volgende commit meegenomen moet worden.
Dit brengt ons tot de drie hoofdonderdelen van een Git-project: de Git directory, de Working Tree (de werk directory), en de Staging Area (wachtrij voor een commit).
De Git directory bevat alle info van je project en zijn verschillende versies die werden bijgehouden. Dit is het belangrijkste deel van Git, deze directory wordt gekopieerd wanneer je een repository kloont vanaf een andere computer. De volledige repository wordt opgeslagen in een map “.git” die je terugvindt in de map waarin je je project initialiseert.
In de Working Directory plaats je een bepaalde versie van het project. Deze bestanden worden uit de Git directory gehaald en op de harde schijf geplaatst, dit noem je de checkout, waar jij ze kunt gebruiken of bewerken.
De Staging Area is een bestand, dat zich normaalgesproken in je Git directory bevindt, waar informatie opgeslagen wordt over wat in de volgende commit meegaat. Welke aanpassingen je dus wilt bijhouden in de Git directory. Door een Commit uit te voeren van de Staging Area, maak je een nieuwe snapshot. Vanaf dan heb je dus een bepaalde versie in de Git directory die je altijd opnieuw kan oproepen.