What are Git hooks?
Git hooks are scripts that Git executes before or after events such
as: commit, push, and receive. Git hooks are a
built-in feature - no need to download anything. Git hooks are run
These hook scripts are only limited by a developer's imagination.
Some example hook scripts include:
pre-commit: Check the commit message for spelling errors.
- pre-receive: Enforce project coding standards.
- post-commit: Email/SMS team members of a new commit.
- post-receive: Push the code to production.
How do git hooks work?
Every Git repository has a
.git/hooks folder with a
script for each hook you can bind to. You're free to change or
update these scripts as necessary, and Git will execute them when
those events occur.
Here's a full list of hooks you can attach scripts to:
Why should I care?
Fair question! Git hooks can greatly increase your productivity as a
developer. For example, being able to push to your staging or
production environment without ever leaving Git is just plain
awesome. Update your code, make a commit and push, and your code can
be running in any environment you specify. No need to mess with ssh
How do I implement Git hooks?
The short and easy: Overwrite (or create) one of the scripts in
.git/hooks and make it executable.
overcommit - A
well-maintained, up-to-date, flexible Git hook manager.
Takes a snapshot with your webcam every time you git commit code,
and archives a lolcat style image with it.
podmena - Enhance
your commit messages adding random emoji to it.
pre-commit - A framework for
managing and maintaining multi-language pre-commit hooks.
Hooks is a
command line git hook management tool.
Git Hooks Manager
- A tool to manage project, user, and global Git hooks for
multiple Git repositories.
Git::Hooks - A
framework for implementing Git (and Gerrit) hooks.
- Hook that blocks bad commits. Useful for Python-development.
- A modular and easy to configure git hooks framework, supporting
Jig - A pre-commit
hook on steroids
- Write your hooks in PHP, manage and organize them on a task and
project level. Has an additional Hooks library
- Setup, manage and update your hooks with Grunt. Can be used with
all languages, supports templates.
Husky - Git hooks
for Node.js, manage your hooks from your package.json.
- Git hooks for PHP based projects.
- Git hooks for CommandBox CFML based projects.
Autohook - A
very, very small Git hook manager with focus on
hooks4git - A
simple, flexible and language agnostic git hook management
Auto-install Git hook, that supports hooks in any language checked
into Git and also shared repos.
Awesome Git Hooks
- A collection of awesome Git Hooks
Simple git hooks for Crystal. Keep your hooks in a versioned ".githooks/"
Simple git hooks for Gradle. Keep your hooks in a versioned ".githooks/"
If you have a Git hook you love, or a resource you've written for
the community - please create a pull request
Howdy, my name is
Matthew Hudson and I
created this guide to help myself and others wrap our head around
integrating Git hooks with WebHooks and WebPipes.