Als developer wil je dat je code altijd schoon en consistent is — maar handmatig controleren na elke commit is tijdverspilling. Git hooks bieden een oplossing: ze automatiseren taken zoals whitespace-controles en tests, precies op het moment dat jij dat wilt. In deze gids ontdek je hoe je ze instelt en welke types het meest nuttig zijn.

Aantal client-side hooks: 14 · Aantal server-side hooks: 2 · Voorbeeld hook: commit-msg · Trigger momenten: commit, push, receive

Overzicht

1Bevestigde feiten
2Wat onduidelijk is
  • Geen exacte introductiedatum van Git hooks gedocumenteerd
  • Weinig kwantitatieve data over effectiviteit in teams
3Tijdlijn-signaal
  • pre-commit-hooks repo v6.0.0 released (GitHub)
  • pre-commit.com framework populair geworden rond 2015 (pre-commit.com)
4Wat hierna komt
  • Meer integratie met CI/CD pipelines
  • Pre-commit frameworks worden standaard in project-templates

De onderstaande tabel vat de belangrijkste technische specificaties van Git hooks samen.

Attribuut Waarde
Definitie Scripts bij Git-events
Locatie .git/hooks/
Aantal client hooks 14
Aantal server hooks 2
Voorbeeld commit-msg
Pre-commit trigger git commit
Prepare-commit-msg parameters 1-3
check-added-large-files max 500kB

Wat zijn Git hooks?

Git hooks zijn scripts die automatisch worden uitgevoerd wanneer een bepaalde gebeurtenis plaatsvindt in een Git-repository (Atlassian Git Tutorial). Ze vormen een krachtig hulpmiddel voor ontwikkelaars die hun workflow willen stroomlijnen zonder externe tooling.

Doel van Git hooks

Het primaire doel is het automatiseren van taken die je anders handmatig zou moeten uitvoeren. Denk aan:

  • Whitespace-controles voor code style
  • Automatisch tests draaien voor elke commit
  • Commit-berichten valideren op formaat
  • Grote bestanden blokkeren voordat ze worden gepusht

Pre-commit hooks verbeteren commit kwaliteit door formele constraints toe te passen voordat code wordt opgeslagen (Lizard Global Blog). Dit voorkomt dat inconsistente of buggy code de repository binnenkomt.

Eenvoudige uitleg

Stel je voor: je schrijft code, typt git commit, en voordat je editor opent verschijnt er een rapport dat je code compileert of style-checkt. Als er een probleem is, blokkeert de commit. Git hooks maken dit mogelijk zonder externe CI/CD-services.

Waarom dit belangrijk is

Teams die pre-commit hooks gebruiken, rapporteren minder “style discussions” in code reviews en snellere merge-cycli omdat problemen vroeg worden opgevangen.

Upsides

  • Automatische kwaliteitscontrole
  • Consistente code style in teams
  • Tijd besparen bij code reviews
  • Voorkomt grote bestanden in repository

Downsides

  • Hooks kunnen commits vertragen
  • Setup vereist kennis van scripts
  • Niet version-controlled per default

Het implication is dat de tijdwinst bij reviews opweegt tegen de initiële setup-inspanning, mits hooks light en snel blijven.

Waar bevindt een git hook zich?

Git hooks bevinden zich in de .git/hooks/ directory binnen elke repository (Kinsta Blog). Wanneer je een nieuwe Git-repo initialiseert, zie je daar standaard een verzameling sample-scripts met het sample- voorvoegsel.

Client-side hooks map

Client-side hooks draaien op je lokale machine bij acties zoals commit, merge of checkout. Er zijn 14 typen client-side hooks beschikbaar, waaronder pre-commit, commit-msg en post-checkout (Atlassian Git Tutorial).

Server-side hooks

Server-side hooks draaien op de remote repository bij push- of receive-events. Er zijn twee hoofdtypes: pre-receive en post-receive (Lizard Global Blog). Deze hooks beschermen de centrale repo tegen ongewenste pushes.

Let op

Client-side hooks zijn per repository ingesteld en worden niet standaard gedeeld. Gebruik frameworks zoals pre-commit.com om hooks te version-controlen in je repo.

De catch is dat lokale hooks gemakkelijk worden genegeerd door nieuwe teamleden die de setup niet kennen.

Hoe voer je een git hook uit?

Git hooks activeren automatisch bij Git-acties zoals commit of push (Kinsta Blog). Je hoeft ze niet handmatig te starten — ze koppelen zich aan specifieke gebeurtenissen in de Git-lifecycle.

Hooks activeren

Om een hook te activeren, maak je een executable script in .git/hooks/ met de juiste naam (zonder sample-). Voorbeeld:

#!/bin/sh
echo "Deze hook draait voor elke commit"
exit 0  # 0 = succes, niet-0 = blokkeer commit

Voorbeeld uitvoeren

Een pre-commit voorbeeld script checkt whitespace errors met git diff-index (Atlassian Git Tutorial). Zodra je git commit typt, voert Git dit script uit voordat het commit-bericht wordt gevraagd.

The upshot

Pre-commit blokkeert de commit bij falen; post-commit stuurt alleen een notificatie. Kies je hook-type op basis van wat er moet gebeuren als er iets misgaat.

What this means is dat je voor kritieke checks zoals tests pre-commit gebruikt, en voor logging of notificaties post-commit.

Wat zijn types van Git hooks?

Git hooks zijn onderverdeeld in client-side en server-side categorieën (Lizard Global Blog). Beide dienen verschillende doelen in de ontwikkelingsworkflow.

Client hooks lijst

  • pre-commit: Voert uit voor het commit-bericht, controleert snapshot op tests en code style (Atlassian Git Tutorial)
  • prepare-commit-msg: Vult teksteditor met commit-bericht en kan het aanpassen (Atlassian Git Tutorial)
  • commit-msg: Valideert commit-bericht na prepare (Git SCM Book NL)
  • post-commit: Notificaties na commit (Kinsta Blog)
  • pre-push: Voert integratietests uit voor push (Kinsta Blog)
  • post-checkout: Na git checkout (Atlassian Git Tutorial)
  • pre-rebase: Veiligheidscontroles bij rebase (Atlassian Git Tutorial)

Server hooks

  • pre-receive: Draait op server bij push, controleert ref-updates
  • post-receive: Notificaties na succesvolle push naar server

Het pattern is dat client-side hooks vooral Quality Assurance taken uitvoeren, terwijl server-side hooks Security en Compliance afdwingen.

Git hooks voorbeelden

Praktische voorbeelden maken duidelijk hoe je hooks kunt inzetten in je dagelijkse werk.

Pre-commit hook voorbeeld

Pre-commit.com is een framework voor het beheren van git hook scripts (pre-commit.com). Het biedt een YAML-config waarmee je hooks definieert zonder shell-scripts te schrijven:

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: trailing-whitespace
      - id: check-added-large-files
        args: ['--maxkb', '500']
      - id: no-commit-to-branch

Deze config: checkt trailing whitespace, blokkeert bestanden groter dan 500kB (GitHub pre-commit-hooks), en beschermt branches zoals main en master (GitHub pre-commit-hooks).

Post-checkout hook

Een post-checkout hook kan automatisch dependencies installeren wanneer je naar een andere branch switcht. Dit voorkomt dat je met verouderde packages werkt.

“Pre-commit hooks zijn een uitstekende manier om potentiële problemen in een vroeg stadium op te vangen.” — Kinsta Blog

“Usually, pre-commit hooks are a terrible idea.” — Dev.to Developer (afl_ext)

Samenvatting: Pre-commit hooks zijn krachtig maar vereisen zorgvuldige setup. Gebruik het pre-commit.com framework voor version-controlled hooks. Teams die deze aanpak volgen, verminderen style discussions en versnellen merge-cycli terwijl probleemcode eerder wordt opgevangen. Test hooks grondig voordat je ze in teamverband uitrolt.

Hoe stel je Git hooks in met pre-commit.com?

Het pre-commit.com framework maakt het beheren van hooks een stuk eenvoudiger. Volg deze stappen om aan de slag te gaan:

  1. Installeer pre-commit: pip install pre-commit of npm install -g pre-commit voor Node.js-projecten
  2. Maak .pre-commit-config.yaml: Definieer je hooks met repo, rev en hooks
  3. Installeer hooks in je repo: pre-commit install
  4. Test handmatig: pre-commit run --all-files om alle bestanden te controleren
  5. Update regelmatig: pre-commit autoupdate voor nieuwe versies

Pre-commit config ondersteunt id, types_or, exclude_types, args en stages voor gedetailleerde controle (pre-commit.com). Je kunt hooks ook alleen laten draaien voor specifieke bestanden of stages.

Let op

Pre-commit hooks zijn volgens sommige developers een slecht idee vanwege vertraagde commits en complexiteit (Dev.to Article). Houd hooks light en snel — vermijd zware tests die minuten duren.

De implication voor development teams is dat een goed doordachte hook-configuratie de workflow verbetert zonder ontwikkelaars te frustreren met trage commits.

Gerelateerde lectuur: How to Update Drivers Windows · Telecommunications Industry Complete Guide

In je Git workflow vormen hooks een krachtige aanvulling op basiscommando’s zoals het lokale Git-branch verwijderen om je repository netjes te houden.

Veelgestelde vragen

Wat is het doel van een git hook?

Git hooks automatiseren taken bij Git-events, zoals code style checks of tests draaien voor elke commit. Ze verbeteren code kwaliteit zonder handmatig werk.

Zijn Git hooks goed voor development?

Ja, mits correct ingesteld. Pre-commit hooks vangen problemen vroeg op, maar te zware hooks kunnen ontwikkelaars frustreren met trage commits.

Hoe maak je een git hook executable?

Verwijder het sample- voorvoegsel van de bestandsnaam en zorg dat het script executable is: chmod +x .git/hooks/pre-commit.

Kunnen git hooks in repo gecommit worden?

Standaard niet — hooks in .git/hooks zijn lokaal. Gebruik pre-commit.com of symlinks om hooks te version-controleren in je project.

Wat zijn git hooks op Windows?

Git hooks op Windows werken hetzelfde als op Linux, maar scripts moeten Unix-formaat hebben (LF in plaats van CRLF). Gebruik pre-commit frameworks die dit automatisch afhandelen.

Verschil pre-commit en post-commit?

Pre-commit blokkeert de commit als de hook faalt; post-commit draait na de commit en is alleen voor notificaties of logging.

Hoe test je een git hook?

Gebruik git commit --dry-run voor sommige hooks, of roep het hook-script direct aan: .git/hooks/pre-commit. Pre-commit.com biedt pre-commit run voor handmatig testen.