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 locally.

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 they 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. 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 or ftp.


How do I implement Git hooks?

The short and easy: Overwrite one of the scripts in .git/hooks and make it executable.


Reading


Projects

  • 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.
  • git-pre-commit-hook - Hook that blocks bad commits. Useful for Python-development.
  • App::GitHooks - A modular and easy to configure git hooks framework, supporting many plugins.
  • Jig - A pre-commit hook on steroids

Contribute

If you have a Git hook you love, or a resource you've written for the community - please create a pull request here.


Maintainer

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.