Ga naar hoofdinhoud

Git-tag-tutorial: tags maken, beheren en gebruiken

Leer hoe je Git-tags effectief gebruikt om belangrijke mijlpalen te markeren, je workflow te organiseren en de samenwerking in projecten te verbeteren.
· 8 min lezen

Verken met AI

Ik ben een machine learning engineer. Als er één essentieel ding is dat ik heb geleerd, is het dat nette versies meer zijn dan een goede gewoonte. Het is cruciaal voor reproduceerbaarheid en samenwerking.

Git-tags zijn onmisbaar om stabiele momenten in je code te markeren. Ze helpen bij het maken van releases, terugrollen naar een eerdere versie of integreren met CI/CD-workflows. Of je nu aan code, data of nieuwe machine learning-modellen werkt: Git-tags maken je leven makkelijker, ongeacht je achtergrond of rol.

In deze tutorial leg ik alles uit wat je moet weten om Git-tags toe te passen en te beheersen. Klaar om te zien hoe Git-tags je ontwikkelwerk kunnen vereenvoudigen? Duik erin.

>Wil je eerst een snelle Git-overzicht, dan raad ik aan om de GitHub- en Git-tutorial voor beginners te lezen.

Wat is een Git-tag?

Een Git-tag is een eenvoudige maar krachtige manier om specifieke punten in de geschiedenis van een project te markeren. Zie het als een plakbriefje op een bepaalde commit met de boodschap: “Dit is belangrijk.” 

Git-tags labelen vaak releaseversies, mijlpalen of stabiele controlepunten in je codebase. Het zijn vaste verwijzingen naar een specifieke commit, maar ze maken geen nieuwe commit aan. Zodra je een commit tagt, blijft dat label eraan vastzitten, tenzij je de tag handmatig verplaatst of verwijdert.

De masterbranch met twee Git-tags

De masterbranch met twee Git-tags. Afbeelding door de auteur.

Er zijn twee hoofdtypen tags:

  • Lightweight-tags: Dit zijn eenvoudige bladwijzers. Ze verwijzen naar een specifieke commit zonder extra informatie. Ze zijn snel en makkelijk te maken, vaak gebruikt voor lokale referentie of snel debuggen, maar ze slaan geen metadata op, zoals de auteur of een bericht.
  • Geannoteerde tags: Deze zijn robuuster en worden als volledige Git-objecten opgeslagen. Ze bevatten de naam, e-mail, datum en het bericht van de tagger en kunnen zelfs cryptografisch worden ondertekend. Geannoteerde tags zijn ideaal om releasepunten te markeren of tags met een team te delen.

>Wil je meer leren over Git, bekijk dan de cursussen Foundations of Git of Intermediate Git.

Hoe Git-tags maken en beheren

Git-tags maken en beheren is eenvoudig. Laten we de verschillende typen tags en hoe je ze toepast, doornemen.

Lightweight-tags maken

Een lightweight-tag is als een pointer naar een commit. Hij bevat geen metadata, alleen de tagnaam en de commit waarnaar hij verwijst.

Om er een te maken, kun je dit uitvoeren: 

git tag v1.0.0

Deze opdracht maakt een lightweight-tag die wijst naar de huidige HEAD-commit. 

Je kunt ook een tag maken voor een specifieke commit door de commit-hash op te geven:

git tag v1.0.0 5c5fc06

Lightweight-tags zijn handig voor snelle, lokale referenties, vooral bij soloprojecten of tijdelijk werk.

Geannoteerde tags maken

Geannoteerde tags slaan meer informatie op, zoals de naam, e-mail, datum en het bericht van de tagger. Ze worden als volledige Git-objecten opgeslagen en zijn ideaal om officiële releases of mijlpalen te taggen.

Je kunt er een maken met: 

git tag -a v1.0.0 -m "Release version 1.0.0"

Deze opdracht maakt een geannoteerde tag met de naam v1.0.0 met het bericht "Release version 1.0.0".

Je kunt ook een specifieke commit taggen:

git tag -a v1.0.0 5c5fc06 -m "Tagging older commit"

Geannoteerde tags bieden betere documentatie, integreren goed met CI/CD-tools en helpen teams om de geschiedenis transparanter te volgen.

Specifieke commits taggen

Soms moet je een commit taggen die niet de laatste is. Hiervoor kun je eerst de geschiedenis van commits ophalen en vervolgens de commit-hash kiezen waarvoor je een tag wilt maken.

Om de commit-hash op te halen, kun je het volgende uitvoeren:

git log --oneline

Kopieer de commit-hash uit de lijst en voer dan uit:

git tag -a v1.0.0 <commit-hash> -m "Tagging v1.0.0 release"

Aangemaakte tags verifiëren

Om alle tags in je repository op te sommen, gebruik je:

git tag

Als je tags wilt filteren, bijvoorbeeld alleen versies die beginnen met v1., gebruik dan:

git tag -l 'v1.*'

Om details over een specifieke tag te bekijken, voer uit:

git show v1.0.0

Werken met Git-tags

Zodra je Git-tags hebt gemaakt, moet je ze vaak delen, bijwerken of ermee werken als onderdeel van je ontwikkel- of releaseworkflow. In deze sectie behandelen we de meest voorkomende taken voor het werken met tags in lokale en remote repositories. 

Tags pushen naar een remote repository

Tags worden niet automatisch naar remote repositories gepusht wanneer je git push uitvoert. Je moet ze expliciet pushen.

Om één tag te pushen:

git push origin v1.0.0

Om alle tags in één keer te pushen:

git push --tags

Tags moeten gepusht worden zodat je teamgenoten of CI/CD-pijplijnen er toegang toe hebben. Tags worden vaak ook gebruikt als deployment-triggers, zeker bij versiegestuurde releaseflows. Je kunt meer lezen over hoe je branches pusht en pullt in de Git Push and Pull Tutorial.

Tags verwijderen

Als je een tag wilt verwijderen, kan dat lokaal en remote.

Om hem lokaal te verwijderen, voer je het volgende uit:

git tag -d v1.0.0

Verwijder dezelfde tag daarna van de remote repository met:

git push origin --delete v1.0.0

Je kunt de tag ook direct verwijderen via de web-UI van GitHub of GitLab. 

>Wil je meer leren over GitHub en hoe je het gebruikt, dan raad ik de cursussen GitHub Foundations en GitHub Concepts aan.

Tags uitchecken

Je kunt je repository naar de staat van een specifieke tag uitchecken door te draaien:

git checkout v1.0.0

Maar dit brengt je in een detached HEAD-toestand. Dat betekent dat je niet langer op een branch zit en dat nieuwe commits nergens bij horen, tenzij je expliciet een branch aanmaakt:

git checkout -b hotfix-v1.0.0

Een specifieke tag uitchecken helpt bij het debuggen of beoordelen van een bepaalde releaseversie zonder je huidige ontwikkelbranch te beïnvloeden. Het wordt ook gebruikt om je productieapplicatie vanaf een specifieke versie te bouwen, bijvoorbeeld wanneer een Docker-image moet worden gebouwd.

Taggen na een commit

Als je een tag moet bijwerken, bijvoorbeeld door hem naar een andere commit te verplaatsen of het bericht te wijzigen, kun je eenvoudig forceren met:

git tag -f -a v1.0.0 5c5fc06 -m "retagging"

Je kunt hetzelfde ook zonder commit-hash draaien om de tag simpelweg aan de huidige HEAD toe te voegen.

>Heb je snel een overzicht van de traditionele Git-commando's nodig, bekijk dan de Complete Git Cheat Sheet.

Best practices voor het gebruik van Git-tags

Weten hoe je tags maakt en beheert is één ding, ze effectief gebruiken is iets anders. Slim ingezet verbeteren tags je workflow, documentatie en teamcommunicatie.

Tags gebruiken voor versioning

Tags zijn perfect voor semantische versionering, wat de aanbevolen manier is om je releases te versien. 

Bij semantische versionering volgen je versienummers het formaat MAJOR.MINOR.PATCH, bijvoorbeeld v.1.2.0.

MAJOR-versies zijn voor grotere en breaking changes, MINOR-versies voor nieuw toegevoegde features en PATCH voor bugfixes.

Semantische versionering is heel krachtig. Het communiceert duidelijk de omvang van wijzigingen, helpt ontwikkelaars compatibiliteit te begrijpen en werkt goed met geautomatiseerde tools zoals CI/CD-triggers.

Houd je aan een consistente naamgevingsconventie. Kies een patroon (bijv. altijd beginnen met v) en volg dat in al je releases.

Releases taggen

Tags zijn ideaal om belangrijke releasestadia in je project te markeren. Enkele handige tagtypen die je kunt overwegen:

  • v1.0.0-alpha: Interne testversie
  • v1.0.0-beta: Publieke bètarelease
  • v1.0.0: Definitieve productie-release

Door deze stadia te taggen kun je testbuilds makkelijker delen, terugrollen naar eerdere releases en een nette geschiedenis van productiedeployments bijhouden. 

Je kunt het proces verder verbeteren door voor releases geannoteerde tags te gebruiken, zodat de juiste context en documentatie worden vastgelegd.

Overmatig gebruik van tags vermijden

Hoe handig en krachtig tags ook zijn, bij overmatig gebruik worden ze waardeloos. Tags moeten alleen betekenisvolle punten in de geschiedenis van je project markeren, zoals stabiele versies, afronding van grote features, mijlpalen of deadlines. 

Elke commit taggen vervuilt je repository en ondermijnt het doel van snelle navigatie. Houd het schoon en doelgericht!

Een goede vuistregel: als je het niet zou deployen of aankondigen, hoeft het waarschijnlijk geen tag.

Problemen met Git-tags oplossen

Zelfs met best practices kom je soms problemen tegen bij het werken met Git-tags, zeker in teams of bij het synchroniseren met remote repositories. In deze sectie behandelen we hoe je de meest voorkomende problemen aanpakt.

Omgaan met de detached HEAD-toestand

Wanneer je een specifieke tag uitcheckt met:

git checkout v1.0.0

zet Git je, zoals eerder vermeld, in een detached HEAD-toestand. Dat betekent dat je niet op een branch zit; als je een commit maakt, hoort die bij geen enkele branch en kan hij verloren gaan tenzij je ingrijpt. 

Je lost dit op door een branch aan te maken met het volgende:

git checkout -b hotfix-v1.0.0

Nu werk je op een branch en kun je zoals gewoonlijk commits maken en pushen.

Tagconflicten oplossen

Conflicten kunnen ontstaan wanneer dezelfde tagnaam lokaal en remote naar verschillende commits wijst. 

Dit gebeurt vaak als je lokaal een tag verwijdert en opnieuw maakt, of wanneer iemand anders een tag force-pusht.

Er zijn twee opties om dat op te lossen.

Optie 1: Tag verwijderen en opnieuw pushen

git tag -d v1.0.0
git push origin --delete v1.0.0
git tag -a v1.0.0 -m "Corrected tag"
git push origin v1.0.0

Optie 2: De bijgewerkte tag force-pushen

Als je zeker weet dat jouw lokale tag de juiste is en je hebt toestemming:

git push origin -f v1.0.0

Wees met die optie wel voorzichtig, want force-pushen kan wijzigingen van anderen overschrijven. Gebruik dit alleen als je zeker bent of na overleg met je team.

Conclusie

Git-tags zijn behoorlijk krachtig als je ze verstandig gebruikt. In deze tutorial heb je geleerd:

  • Wat Git-tags zijn en wanneer je ze gebruikt
  • Hoe je Git-tags toepast in je repository
  • Best practices voor het gebruik van Git-tags
  • Hoe je veelvoorkomende problemen met Git-tags oplost

Of je nu machine learning-modellen uitbrengt, updates naar een dataproduct pusht of samenwerkt in een team: tags helpen je betekenisvolle momenten op de tijdlijn van je project te markeren. Ze houden alles geordend, reproduceerbaar en makkelijk terug te draaien of te deployen.

Ik vertrouw voortdurend op Git-tags. Ze besparen me uren door me te laten terugrollen naar stabiele versies wanneer er bugs opduiken of door geautomatiseerde CI/CD-workflows te triggeren. Ik gebruik ze om Docker-images voor productie-builds te taggen en te versien, zodat alles wat ik oplever volledig traceerbaar en gedocumenteerd is.

Begin vandaag nog met tags en transformeer je Git-workflow!

FAQs

Waarvoor wordt een Git-tag gebruikt?

Een Git-tag markeert specifieke punten in de geschiedenis van een repository, vaak voor releases of belangrijke mijlpalen.

Wat is het verschil tussen lightweight en geannoteerde Git-tags?

Lightweight-tags zijn eenvoudige verwijzingen naar een commit, terwijl geannoteerde tags metadata opslaan zoals auteur, datum en bericht.

Wat gebeurt er als ik een tag uitcheck in Git?

Je komt in een “detached HEAD”-toestand terecht, wat betekent dat je niet op een branch zit en commits niet aan een branch worden opgeslagen tenzij je er een aanmaakt.

Hoe maak ik een Git-tag?

Gebruik git tag <tagname> voor een lightweight-tag of git tag -a <tagname> -m "message" voor een geannoteerde tag.

Worden Git-tags vaak gebruikt in CI/CD-workflows?

Ja. Tags kunnen geautomatiseerde builds of deployments in CI/CD-pijplijnen triggeren, vooral bij het taggen van releaseversies.

Patrick Brus

Auteur

Patrick Brus

Ik ben een Cloud Engineer met een sterke basis in elektrotechniek, machine learning en programmeren. Mijn carrière begon in computervisie, met een focus op beeldclassificatie, waarna ik overstapte naar MLOps en DataOps. Ik ben gespecialiseerd in het bouwen van MLOps-platformen, het ondersteunen van data scientists en het leveren van Kubernetes-gebaseerde oplossingen om machinelearning-workflows te stroomlijnen.

Onderwerpen

Gerelateerd