Sometimes you would like Git events (commits, pushes, etc.) to trigger scripts which take care of some tasks.
Hooks are scripts that are executed before/after certain events.
You can find and edit them here:
$ ls -l .git/hooks/
They can be used to enforce nearly any kind of policy for your project.
There are client-side and server-side hooks.
pre-commit
: before commit message editor (example: make sure tests pass)prepare-commit-msg
: before commit message editor (example: modify default messages)commit-msg
: after commit message editor (example: validate commit message pattern)post-commit
: after commit process (example: notification)pre-rebase
: before rebase anything (example: disallow rebasing published commits)post-rewrite
: run by commands that rewrite commitspost-checkout
: after successful git checkout
(example: generating documentation)post-merge
: after successful mergepre-push
: runs during git push
before any objects have been transferredpre-auto-gc
: invoked just before the garbage collection takes placepre-receive
: before accepting any referencesupdate
: like pre-receive
but runs once per pushed branchpost-receive
: after entire process is completed