Definitie: Git is een gratis, open source systeem voor versiebeheer waarmee ontwikkelaars elke wijziging in bestanden, meestal broncode, vastleggen met auteur, tijdstip en toelichting. Git is gedistribueerd: iedere ontwikkelaar heeft een volledige kopie van het project en de geschiedenis op zijn eigen computer.

In het kort

  • Git is in 2005 ontwikkeld door Linus Torvalds, de maker van de Linux-kernel, als vervanger van het commerciële BitKeeper.
  • Met Git kun je terug naar elke eerdere versie, parallel werken in branches en wijzigingen van meerdere ontwikkelaars samenvoegen.
  • GitHub, GitLab en Bitbucket zijn online diensten die Git-repositories hosten en samenwerking eenvoudiger maken; Git zelf is de onderliggende techniek.
  • GitHub bestaat sinds 2008 en is sinds 2018 eigendom van Microsoft.

Wat is Git?

Zonder versiebeheer bewaren mensen versies van bestanden als “offerte-definitief”, “offerte-definitief-2” en “offerte-echt-definitief”. Bij software met honderden bestanden en meerdere ontwikkelaars werkt dat niet. Je wilt weten wie wat heeft veranderd, waarom, en je wilt terug kunnen als een wijziging iets kapotmaakt.

Git regelt dat. Elke keer dat een ontwikkelaar een afgerond stuk werk vastlegt, maakt Git een momentopname van het project: een commit. Bij elke commit hoort een korte beschrijving van de wijziging. Zo ontstaat een complete geschiedenis van het project, waarin je elke versie kunt terugvinden en vergelijken.

Invenix noemt Git het standaardsysteem voor versiebeheer van broncode. Volgens Delta-N ontstond het in 2005, toen de ontwikkelaars van de Linux-kernel na een conflict met het bedrijf achter BitKeeper een eigen systeem nodig hadden. Een van de eisen was ondersteuning voor parallel werken in meerdere branches.

Wat is versiebeheer?

Versiebeheer is het bijhouden van wijzigingen in bestanden door de tijd heen. Er zijn twee hoofdvormen:

Centraal versiebeheer Gedistribueerd versiebeheer
Voorbeeld Subversion (SVN) Git
Geschiedenis staat Op één centrale server Bij iedere ontwikkelaar volledig lokaal
Offline werken Beperkt Volledig mogelijk
Server valt uit Werk ligt stil Iedere kopie is een volledige back-up
Snelheid Afhankelijk van de verbinding Meeste acties lokaal en snel

Git is gedistribueerd. Delta-N wijst erop dat je daardoor ook zonder verbinding kunt werken en later synchroniseert met een gedeelde repository.

Hoe werkt Git?

Een bestand doorloopt in Git drie statussen:

  1. Gewijzigd (modified). Je hebt het bestand aangepast, maar nog niet gemarkeerd.
  2. Klaargezet (staged). Je hebt aangegeven dat de wijziging mee moet in de volgende commit.
  3. Vastgelegd (committed). De wijziging is opgeslagen in de geschiedenis.

Git slaat per commit een momentopname op en bewaart alleen wat veranderd is. Elk stuk gegevens krijgt een controlegetal (checksum), zodat beschadiging of verlies direct opvalt.

De belangrijkste begrippen

Begrip Betekenis
Repository De map met het project en de volledige geschiedenis
Commit Een vastgelegde momentopname met beschrijving
Branch Een aparte ontwikkellijn, bijvoorbeeld voor een nieuwe functie
Merge Twee branches samenvoegen
Clone Een kopie maken van een bestaande repository
Push en pull Wijzigingen naar een gedeelde repository sturen of ophalen
Pull request Een verzoek om een branch te laten beoordelen en samenvoegen, op GitHub of GitLab

Basiscommando’s

DataCamp noemt onder meer deze commando’s voor beginners:

  • git init maakt van een map een repository;
  • git add zet wijzigingen klaar voor de volgende commit;
  • git commit legt de klaargezette wijzigingen vast;
  • git branch maakt een nieuwe ontwikkellijn;
  • git merge voegt een branch samen met een andere;
  • git clone kopieert een bestaande repository;
  • git push en git pull sturen en halen wijzigingen;
  • git log toont de geschiedenis.

Werken met branches

Branches zijn een van de sterkste onderdelen van Git. Een gebruikelijke werkwijze:

  1. De hoofdlijn (vaak main) bevat altijd een werkende versie.
  2. Voor een nieuwe functie of bugfix maakt een ontwikkelaar een eigen branch.
  3. Daarin werkt hij zonder de hoofdlijn te verstoren.
  4. Als het werk klaar is, wordt het beoordeeld, bijvoorbeeld via een pull request.
  5. Na goedkeuring wordt de branch samengevoegd met de hoofdlijn.

Zo kunnen meerdere ontwikkelaars tegelijk aan verschillende onderdelen werken, en blijft de live versie stabiel. Ontstaat er bij het samenvoegen een conflict, omdat twee mensen dezelfde regel hebben aangepast, dan toont Git dat en kiest de ontwikkelaar welke versie blijft.

Een voorbeeld uit de praktijk

Stel dat een webapplicatie live staat en er tegelijk twee dingen moeten gebeuren: een fout in het factuuroverzicht moet snel worden opgelost, en er wordt gewerkt aan een nieuwe exportfunctie die pas over een paar weken klaar is.

  1. De ontwikkelaar maakt een branch voor de exportfunctie en werkt daar rustig verder.
  2. Voor de fout maakt hij een aparte branch vanaf de live versie.
  3. De oplossing wordt getest, samengevoegd met de hoofdlijn en live gezet.
  4. De exportfunctie gaat niet ongemerkt mee, want die staat nog in zijn eigen branch.
  5. Als de export klaar is, wordt ook die branch samengevoegd, inclusief de eerdere oplossing.

Zonder versiebeheer zou het lastig zijn om de oplossing live te zetten zonder het halve werk aan de exportfunctie mee te sturen.

Wat hoort niet in Git?

Niet alles in een projectmap hoort in de repository. Met een bestand .gitignore geef je aan welke bestanden Git moet negeren. Denk aan:

  • configuratiebestanden met wachtwoorden, API-sleutels en andere geheimen;
  • tijdelijke bestanden en logbestanden;
  • mappen met geïnstalleerde pakketten die je opnieuw kunt downloaden;
  • grote bestanden zoals video’s of databaseback-ups.

Geheimen bewaar je in plaats daarvan in de omgevingsinstellingen van de server of in een aparte kluis voor sleutels.

Git en automatische uitrol

Git is vaak het startpunt van een geautomatiseerde keten, ook wel CI/CD genoemd. Zodra een ontwikkelaar wijzigingen naar de gedeelde repository stuurt, draaien automatisch tests. Slagen die, dan kan de nieuwe versie automatisch naar een testomgeving of naar productie worden uitgerold. Zo hangt elke versie die live staat aan een herkenbare commit, en is altijd na te gaan welke code er draait.

Git vs GitHub: wat is het verschil?

Git GitHub
Wat Versiebeheersysteem Online platform voor Git-repositories
Waar Lokaal op je computer In de cloud
Maker Linus Torvalds, 2005 Opgericht in 2008, sinds 2018 van Microsoft
Functies Commits, branches, merges, geschiedenis Hosting, pull requests, issues, samenwerking, automatisering
Kosten Gratis, open source Kernfuncties gratis, betaalde abonnementen voor teams

Kinsta vat het samen: Git draait lokaal, GitHub voegt samenwerking, projectbeheer en opslag in de cloud toe. Volgens Kinsta beginnen teamabonnementen bij 4 dollar per gebruiker per maand. Alternatieven zijn GitLab, met onder meer uitgebreide gebruikersrechten en ingebouwde CI, en Bitbucket.

Waarom is Git belangrijk voor opdrachtgevers?

Ook als je zelf geen code schrijft, raakt Git je project:

  • Terug kunnen. Gaat er na een update iets mis, dan is de vorige versie direct terug te halen.
  • Overdraagbaarheid. Een andere ontwikkelaar kan de code en de geschiedenis overnemen. Invenix beschrijft hoe een overdracht met een goed bijgehouden repository veel sneller verliep dan zonder.
  • Inzicht. De geschiedenis laat zien wat er wanneer is veranderd en waarom.
  • Veilig uitrollen. Gecombineerd met automatische tests en uitrol (CI/CD) gaat nieuwe code gecontroleerd live.

Vraag daarom bij maatwerk altijd waar de repository staat en wie er toegang toe heeft.

Veelgemaakte fouten

  • Wachtwoorden en sleutels in de repository. Geheime gegevens horen niet in de code; ook na verwijderen blijven ze in de geschiedenis staan.
  • Onduidelijke commitberichten zoals “fix” of “update”, waardoor de geschiedenis weinig zegt.
  • Te grote commits met tientallen wijzigingen tegelijk, die lastig te beoordelen en terug te draaien zijn.
  • Rechtstreeks op de hoofdlijn werken zonder branch of controle.
  • Geen kopie buiten één account. Zorg dat de repository onder het account van de organisatie valt, niet alleen onder dat van één ontwikkelaar.

Wat betekent dit voor jouw project?

Bij een nieuw project wil ik vooraf duidelijk hebben wat we met een eerste versie bedoelen. Versiebeheer hoort daar vanzelfsprekend bij: elke wijziging na de eerste versie is terug te vinden, en verbeteringen kunnen gecontroleerd worden doorgevoerd. Dat past bij beheer en verbetering als vaste stap na de livegang.

Voor jou als opdrachtgever is vooral belangrijk dat je weet waar de code staat en wat er gebeurt als je ooit met een andere partij verder wilt.

Vraag? Stuur me voor wie het is, wat er nu gebeurt en wat de eerste versie moet oplossen. Dan bepalen we samen de logische eerste stap. Lees ook meer over een maatwerk webapplicatie.

Veelgestelde vragen over Git

Wat is Git?

Git is een gratis, open source versiebeheersysteem waarmee ontwikkelaars wijzigingen in code vastleggen, terughalen en samenvoegen. Het is in 2005 ontwikkeld door Linus Torvalds en is gedistribueerd, zodat iedere ontwikkelaar een volledige kopie heeft.

Wat is het verschil tussen Git en GitHub?

Git is het versiebeheersysteem zelf en draait lokaal op je computer. GitHub is een online platform van Microsoft waar je Git-repositories host en samenwerkt via onder meer pull requests en issues.

Wat is versiebeheer in software?

Versiebeheer is het bijhouden van alle wijzigingen in de bestanden van een softwareproject, met wie, wanneer en waarom. Het maakt terugdraaien, vergelijken en samenwerken mogelijk.

Verwante termen

Broncode · Intellectueel eigendom software · Vendor lock-in · Doorontwikkeling en onderhoud · Technische schuld · Backend

← Terug naar de kennisbank