Chuck's Academy

Git Hooks and Automation

Types of Git Hooks

Now that you have a solid understanding of the basics of Git, it's time to explore the different types of Git Hooks you can use to automate and improve your workflow.

Classification of Git Hooks

Git Hooks are divided into two main categories:

  1. Client-Side Hooks: These hooks are executed on the user's machine and are triggered by actions like commit and push.
  2. Server-Side Hooks: These hooks are executed on the server where the repository is hosted and are triggered during interactions with the remote repository.

Client-Side Hooks

Client-side hooks are triggered during local actions in the user's repository. Here are some of the most important ones:

  • pre-commit: Runs before a commit is created. You can use it to check the code format or run tests.

    bash
  • prepare-commit-msg: Runs before the commit message is edited. Useful for automatically preparing or modifying the commit message.

    bash
  • commit-msg: Runs after the commit message is entered. It can be used to validate or modify the commit message.

    bash
  • post-commit: Runs after a commit is made. Ideal for notifications or post-commit tasks, such as updating a JIRA ticket.

    bash
  • pre-push: Runs before sending commits to the remote repository. This hook can be used to check the code or finalize any necessary preparations before the push.

    bash

Server-Side Hooks

Server-side hooks are triggered during interactions with the remote repository, such as when receiving updates. Some of the most notable hooks are:

  • pre-receive: Runs before accepting a push on the server. It can be used to validate the received data and reject the push if it doesn't meet certain criteria.

    bash
  • update: Similar to pre-receive, but runs once for each branch that is being updated.

    bash
  • post-receive: Runs after the data has been received. Useful for tasks such as continuous integration or automatic deployments.

    bash
  • post-update: Runs after updating the references in the repository. Ideal for notifications or processes that depend on repository updates.

    bash

Location of Git Hooks

The hooks are stored in the hooks directory inside the .git directory in your local repository. When initializing a new repository, Git provides sample hook scripts that are disabled by default (.sample).

bash

To activate a hook, simply rename its file, removing the .sample extension.

bash

From here, you can edit the scripts using any scripting language supported by your environment.

In the upcoming sections, we will dive into how to configure and customize these hooks in both local and server environments and how to use them to automate various tasks in your workflow.

Let's continue!


Ask me anything