Wat is git?

Wanneer je met meerdere personen tegelijk een stuk software ontwikkelt, vormt het samenvoegen van alle code een uitdaging. Je wilt enerzijds voorkomen dat je tijd verliest door telkens in overleg te moeten, maar wilt ook voorkomen dat je achteraf lang bezig bent met het corrigeren van fouten. Om dit probleem op te lossen, zijn er versiebeheersystemen. De populairste variant van dit moment is de open source tool git.

Het ontstaan van git

Wie op Linux in de terminal man git typt, krijgt als antwoord: git – the stupid content tracker. Git is bedacht en geschreven door de grondlegger van Linux: Linus Torvalds. De Linux kernel is een van de grootste softwareprojecten ter wereld, met duizenden ontwikkelaars die code bijdragen. Versiebeheer is hiervoor enorm belangrijk. Het versiebeheersysteem waarmee de kernel werd ontwikkeld zinde Torvalds niet. De druppel die emmer deed overlopen, was het moment dat er voor het systeem licentiekosten moesten worden betaald. Git werd geboren.

Git, volgens The Cambrigde Dictionairy: “a person, especially a man, who is stupid or unpleasant.”

Git wordt sindsdien standaard meegeleverd met (vrijwel) iedere Linux distributie. De tool ondersteunt gedistribueerd samenwerken. Je bent als ontwikkelaar dus niet tijd- of locatiegebonden.

We hebben de belangrijkste git commando’s hieronder beschreven.

git init

Om een folder klaar te maken voor versiebeheer, gebruik je het commando git init. Als je dit doet dan krijg je de volgende notificatie:

bash-5.0$ pwd
/home/atcomputing/git/my_repo
bash-5.0$ git init
Initialized empty Git repository in /home/atcomputing/git/my_repo/.git/
bash-5.0$
git clone

Als je een bestaande git repository (van iemand anders) wilt gebruiken om mee te werken, dan kun je het commando git clone gebruiken. Door de locatie van de repository op te geven, zal Git alle files in de repository naar het locake systeem kopiëren. Als voorbeeld hebben we een repository van GitHub gekloond.

bash-5.0$ git clone git@github.com:atcomputing/atpuzzel.git

Cloning into ‘atpuzzel’…

remote: Enumerating objects: 59, done.

remote: Counting objects: 100% (59/59), done.

remote: Compressing objects: 100% (21/21), done.

remote: Total 69 (delta 39), reused 58 (delta 38), pack-reused 10

Receiving objects: 100% (69/69), 56.78 KiB | 564.00 KiB/s, done.

Resolving deltas: 100% (39/39), done.

bash-5.0$

git add

Wanneer je vervolgens in deze repository een bestand toevoegt, kun je deze aan versiebeheer toevoegen door het git add commando.

git commit

Wanneer je de door jou toegevoegde of aangepaste bestanden wilt toevoegen aan de repository (en daarmee dus feitelijk een nieuwe/bijgewerkte versie van de repository wil maken), doe je dat met git commit. Git vraagt hierbij altijd om een toelichting: wat heb je precies aangepast of wat voeg je toe? Dit maakt het eenvoudiger om achteraf alle wijzigen te kunnen nalopen als er problemen zijn. git commit -m “voorspelling-feature aan de zoekfunctie toegevoegd”

git push

Als laatste stap die je je lokale kloon te synchroniseren met de bron. Dit doe je door git push. Hiermee worden alle gewijzigde bestanden naar de bron-repo gezet. Dat kan dus in GitHub zijn.

Uiteraard zitten er allerlei mechanismen in Git om te voorkomen dat je per ongeluk alles overschrijft of dat iedereen zomaar repositories van andere kan bewerken. Zo kun je instellen dat je alleen wijzigingen mag voorstellen (pull request), maar ze niet zelf mag doorvoeren. Dat mag alleen de eigenaar van de repo.

Het succes en de populariteit van git heeft diverse “spinoffs” opgeleverd die vaak als ondersteunde of gehoste (SaaS) software oplossing worden aangeboden. Hoewel er mogelijk tientallen zijn, lichten we twee populaire varianten uit.

GitLab

In veel gevallen maakt Git onderdeel uit van een ontwikkelstraat. GitLab is hierop ingesprongen door Git als basis te gebruiken en daar door middel van zogeheten runners pipeline mogelijkheden aan toe te voegen. Hiermee kan, bijvoorbeeld na een git commit commando, automatisch een build van de software worden gestart. Dit kan de basis zijn voor een CI/CD pipeline. GitLab is er in verschillende smaken: community edition (self hosted, geen support, open source) of enterprise edition (self hosted of SaaS, met support en aanvullende, closed source features). GitLab heeft de gewoonte om nieuwe functionaliteit te introduceren in de enterprise edition en die na enige tijd ook vrij te geven voor de community. Recent heeft GitLab’s Nederlandse CEO en mede-oprichter Sid Sijbrandij een blog geschreven over een hele reeks nieuwe functionaliteit die naar de community varian worden overgeheveld.

Bij AT Computing hosten we een GitLab CE omgeving binnen het Google Cloud Platform. We hebben GitLab hierbij tot dirigent van onze CI/CD pipeline gemaakt. Iedere training heeft een eigen git repository, waarbij we met een druk op de knop via de CI/CD pipeline volledig automatisch een complete lab-omgeving voor onze cursisten kunnen neerzetten: getest en wel.

Wanneer een docent of cursist een onvolkomenheid ontdekt of er een nieuwe versie van een binnen de training gebruikt pakket uitkomt, dan deze aanpassingen via  git eenvoudig worden doorgevoerd. We maken hierbij gebruik van aparte branches voor test en productie, zodat de stabiliteit van de omgeving gewaarborgd is.

GitHub

De populairste online git-variant is GitHub. Via deze website wordt door ontwikkelaars wereldwijd gelijktijdig aan duizenden softwareprojecten gewerkt. GitHub kent een gratis variant (voor open source projecten), maar ook een abonnement. Met het abonnement kun je ook prive-repositories maken die niet door andere kunnen worden gekloond. GitHub wordt niet alleen gebruikt voor software, maar ook steeds meer voor het bijhouden van documentatie. Onder andere Microsoft heeft een groot deel van haar technische documentatie over bijvoorbeeld Azure ondergebracht in GitHub. Dat is niet zo vreemd, want in 2018 heeft Microsoft GitHub gekocht. Ook AT Computing heeft een eigen GitHub account. Daarnaast kan het maar zo zijn dat je diverse persoonlijke accounts van AT-medewerkers tegenkomt als je rondneust.


Wil jij meer weten over Git?

Wil je meer lezen over Git? Kijk dan eens op https://git-scm.com/
Wil je leren hoe je werkt met Git? Bekijk dan onze training Version control with Git

Heb je behoefte aan advies over of hulp bij het werken met of implementeren van Git? Onze consultants kunnen je helpen. Neem vrijblijvend contact met ons op.

Onderwerpen
Actieve filters: Wis alle filters
Loading...