Meer informatie over commits: Git commits
Wat is een commit?
Wanneer er veranderingen zijn geweest van een project, kunnen deze gecommit worden. Een commit bevat de veranderingen die zijn gemaakt op de branch waarop gewerkt is. Met een commit worden de veranderingen naar je lokale repository geüpload.
Hoe zit een commit in elkaar?
Met het uitvoeren van een commit op een gekloonde repository worden de veranderingen op de lokale repository gezet. In een commit zitten de volgende onderdelen:
- De veranderde bestanden: De aanpassing die ten opzichte van de vorige commit zijn gemaakt
- De titel van de commit: Dit is een verplicht onderdeel van elke commit. Als hier een duidelijke naam aan gegeven wordt, dan is het makkelijk om later terug te zien welke veranderingen in de commit zijn gemaakt.
- Voorbeeld: Feature: Validatie van e-mail toegevoegd
- De optionele beschrijving van de commit: In het geval dat er veel veranderingen zijn, kan het handig zijn om een duidelijke beschrijving te geven welke veranderingen zijn gemaakt.
- De optionele toegevoegde contributors: Indien er samengewerkt is met andere mensen aan een commit, dan is het voor de navolgbaarheid goed om deze mensen ook toe te voegen aan de commit.
- Uniek ID: Dit is een hash, wat de commit uniek maakt in de hele Git geschiedenis en wordt gemaakt op basis van de vorige commit, de auteur, de datum en de veranderingen.
In de figuur hieronder staat een voorbeeld van GitHub Desktop met een veranderd bestand voor een project.
Figuur 1: Voorbeeld hoe GitHub Desktop eruit ziet
- Hier zie je welke bestanden zijn veranderd, toegevoegd of verwijderd. Met de checkboxes kan je ook selecteren of je bepaalde bestanden niet wil commiten. Dit kan bijvoorbeeld met een test- of tijdelijk bestand.
- Bestanden/folders die zijn opgenomen in de .gitignore zullen niet worden meegenomen in de commit.
- Hier voer je een titel (in dit geval “Update page.tsx”) en een (optionele) beschrijving toe. Zodra een titel is toegevoegd kan het gecommit worden.
- In deze beschrijving kan je een uitleg geven over de veranderingen in de commit. Ook kunnen hierin andere mensen getagd worden indien ze ook hebben gewerkt aan de veranderingen in die commit (met
@gebruikersnaam
).
- In deze beschrijving kan je een uitleg geven over de veranderingen in de commit. Ook kunnen hierin andere mensen getagd worden indien ze ook hebben gewerkt aan de veranderingen in die commit (met
Stashen
Een stash is de plek waar de aanpassingen kunnen worden opgeslagen die niet meegenomen moeten worden in de commit. Hiermee kan een branch schoon achtergelaten worden. Hiermee kan je wisselen van branch zonder te hoeven commiten maar wel de veranderingen lokaal nog te bewaren.
Tags
Git tags zijn markeringen die je kunt gebruiken om specifieke punten in de geschiedenis van een Git-repository vast te leggen. Ze worden vaak gebruikt om belangrijke momenten, zoals de release van een nieuwe versie van software, te markeren. In tegenstelling tot branches, die in de loop van de tijd kunnen veranderen, blijven tags altijd aan dezelfde commit gekoppeld.
Tags worden veel gebruikt om versies van software te markeren, zoals v1.0
, v2.1.3
, enz. Dit helpt om een specifieke staat van de code vast te leggen, vooral bij releases. Omdat tags statisch zijn, kunnen ze altijd worden gebruikt om terug te gaan naar een exacte versie van de code. Tags maken het eenvoudig om belangrijke commits terug te vinden zonder door de volledige commit geschiedenis te moeten zoeken.
Wat kan je met een commit?
Door het maken van een commit heb je een snapshot gemaakt van de bestanden. Dit zorgt ervoor dat de versiegeschiedenis van jouw project bij te houden is over de tijd heen.
Verder is het mogelijk om op een later moment terug te vallen op een commit, de zogeheten rollback
. Voor meer informatie over hoe dit in werking gaat, zie Git revert.
Pushen en pullen
Na het commiten van code kan er gepusht worden. Dit houdt in dat alle veranderingen van één of meerdere commits naar de remote repository worden gezet.
Ter illustratie: Een aanpassing kan gezien worden als een brief. Deze brief stop je in een envelop, de commit. Deze doe je in de brievenbus om door te sturen, de push. Het is ook mogelijk om meerdere brieven in één keer in de brievenbus te doen, net zoals bij pushen van commits.
Voor andere mensen om deze veranderingen ook te krijgen op hun lokale repositories kan er gepulled worden. Door te pullen worden de veranderingen van een branch opgehaald van de remote repository en toegevoegd aan jouw huidige lokale repository. Hierbij is het mogelijk om conflicten te krijgen. Deze moeten eerst opgelost worden voordat er verder gewerkt kan worden.
Voordat je je wijzigingen pusht, is het gebruikelijk om eerst te pullen als er mogelijk commits van anderen zijn. Door eerst te pullen, kun je eventuele conflicten direct tegenkomen en oplossen. Dit voorkomt dat je conflicten naar de repository pusht, wat later tot grotere problemen kan leiden.
Casus
Anne en Bert werken samen aan een project in dezelfde repository. Op een dag voegt Anne een nieuwe feature op een feature branch toe en commit haar wijzigingen met de boodschap: “Voeg gebruikersauthenticatie toe.”. Dit pusht zij ook naar de remote repository.
Bert pulled deze commit naar zijn lokale repository en voegt hieraan nog een extra beveiligingsmaatregel toe. Dit commit hij naar de branch met de boodschap: “Extra beveiligingsmaatregel (wachtwoord) toegevoegd.”.
Met deze commits is het later makkelijk terug te vinden dat Anne de gebruikersauthenticatie heeft gemaakt en Bert hier een toevoeging op heeft gemaakt.
Bronnen
Commits: https://git-scm.com/docs/git-commit
Tags: https://git-scm.com/book/en/v2/Git-Basics-Tagging
Git revert: https://www.atlassian.com/git/tutorials/undoing-changes/git-revert
Volgende stap: 5. Git Mergen