Git Hooks – git hook usage and examples

Developing quality apps is a complex process. To be successful, we need to use tools that help handle coding. These processes often need automation. Due to the needs of programmers and sysadmins, this process reduces deployment time. Git is one of the most popular tools to fulfill this particular purpose. In this tutorial, let’s learn about Git Hooks to increase the efficiency of a VPS project!

Git Hooks are internal utilities that can improve the way Git is used. Learn how it works exactly!

What is Git?

Before learning about Hooks, learn about Git.

Git is an open source version control application. With this application we can follow the development of the software in detail.

Git is very popular with programmers and most open source projects use the platform.

What are Git Hooks?

With Git, we can create project development branches, register changes, and control absolute versions. However, you can automate this process. Git automation can work at the programming and implementation levels. That’s what Hook does.

Git hooks are shell scripts that run automatically before or after Git executes an important command like Commit or Push. For the Hook to work, it is necessary to give the Unix system execution permission. By using these scripts you can automate a number of things.

Git will trigger Git hooks examples as soon as the local repository starts up. It should be noted that sites like Github or Gitlab do not allow it to be used in the first instance. So they are mainly used in local or private instances

How to use Git Hooks

Hooks are stored in directory .git/hooks/ of each cloned project or in the newly created local repository. There we will find many examples of Hooks.

To activate the hook, just create the file and save it in the directory .git/hooks/. However, the filename has been assigned by Git according to Git’s definition as below:

Git Hook Git command Description
applypatch-msg.sample git am When the patch notice is changed
commit-msg.sample git commit To set commit execution notification
fsmonitor-watchman.sample launch watchman To integrate watchman
post-update.sample git push By updating all data after push
pre-applypatch.sample git am Before applying patch
pre-commit.sample git commit Before committing
prepare-commit-msg.sample git commit When the commit message is set
pre-push.sample git push Before pushing
pre-rebase.sample git rebase Before skipping or entering
pre-receive.sample git push When we push and receive data from remote repository
update.sample git push By updating remote data when push

As we can see, every Hook carries a Git command. Thanks to it, we can calculate when it is convenient to use Hook.

Git Hooks Example

The uses of Hooks are wide, but knowledge of Bash and other languages ​​like Python or Ruby is needed to be able to take advantage of its full potential. Here are some basic examples:

Display information about the Commit . implementation

This example shows information about the commit action. Create a file called prepare-commit-msg in the directory .git/hooks/ of the repository. Then write the following script:


SOB=$(git config github.user)
grep -qs "^$SOB" "$1" || echo ". Cambio por @$SOB" >> "$1"

Then save and set the execute permission for the file.

:~$ chmod +x prepare-commit-msg

With this simple Hook, when we commit, we will get relevant information about it immediately.

Document creation when changes are uploaded

The pre-push hook allows documentation of the code if we have a generator. Every time we make a change, the document will be made automatically.

Create the pre-push in the same directory as before and add the script:


doxygen Doxyfile
git add docs/
git commit -m "Update documentation ($(date +%F@%R))"

Save the file and finally set the execute permission.

:~$ chmod +x pre-push

Find and Fix Trailing Whitespace in Commit

This kind of pre-commit Git Hooks is pretty simple to do. Create a file called pre-commit and add the following:

#!/bin/bash -l

if [[ $? == 1 ]]
exit 1


Now trailing whitespace will be found and fixed in all commits.


Git is an important tool for programmers today. Git hooks are a good way to improve this tool even more! In this tutorial, we looked at the basics of automating processes using Git Hooks.

Scripting Git Hooks can be tricky if you don’t have a solid knowledge base in a programming language, like bash.

But now that you know what Git Hooks are, you’ve also learned the basics of Git Hooks first. We recommend that you follow the official document and keep digging deeper!


Hai G. is an expert in managing and operating website services. He has many years of experience in VPS, Hosting, technical SEO, CMS. Especially love WordPress and have been using it for over 5 years now. His hobbies are reading, blogging, traveling and mentoring young people to start a business.

By Nguyen Manh Cuong

Nguyen Manh Cuong is the author and founder of the nguyendiep blog. With over 14 years of experience in Online Marketing, he now runs a number of successful websites, and occasionally shares his experience & knowledge on this blog.

Leave a comment

Your email address will not be published. Required fields are marked *