{"id":1367,"url":"https://github.com/aitemr/awesome-git-hooks","name":"awesome-git-hooks","description":"😎 A collection of awesome Git Hooks","projects_count":38,"last_synced_at":"2026-08-05T12:00:26.372Z","repository":{"id":37734747,"uuid":"159375334","full_name":"aitemr/awesome-git-hooks","owner":"aitemr","description":"😎 A collection of awesome Git Hooks","archived":false,"fork":false,"pushed_at":"2026-01-19T11:34:43.000Z","size":77,"stargazers_count":975,"open_issues_count":3,"forks_count":66,"subscribers_count":18,"default_branch":"master","last_synced_at":"2026-07-17T06:04:52.923Z","etag":null,"topics":["awesome","awesome-list","bash","git-hooks"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aitemr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-11-27T17:40:52.000Z","updated_at":"2026-07-07T16:13:53.000Z","dependencies_parsed_at":"2026-02-01T16:00:27.808Z","dependency_job_id":null,"html_url":"https://github.com/aitemr/awesome-git-hooks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aitemr/awesome-git-hooks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitemr%2Fawesome-git-hooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitemr%2Fawesome-git-hooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitemr%2Fawesome-git-hooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitemr%2Fawesome-git-hooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aitemr","download_url":"https://codeload.github.com/aitemr/awesome-git-hooks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aitemr%2Fawesome-git-hooks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36311008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-05T02:00:06.619Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-04T17:49:57.901Z","updated_at":"2026-08-05T12:00:26.372Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Articles","Tools","Projects","Video Tutorials","License"],"sub_categories":[],"readme":"# Awesome Git Hooks [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\n\u003e A curated list of awesome [Git hooks](https://git-scm.com/docs/githooks)\n\nGit Hooks are scripts that run automatically every time a particular event occurs in a Git repository.\n\n## Contents\n- [Useful Git Hooks scripts](#useful-git-hooks-scripts)\n- [Tools](#tools)\n- [Projects](#projects)\n- [Articles](#articles)\n- [Video Tutorials](#video-tutorials)\n- [Support](#support)\n\n## Useful Git Hooks scripts\n\n- [pre-commit](https://github.com/aitemr/awesome-git-hooks/tree/master/pre-commit) - This hook is called before obtaining the proposed commit message.\n- [prepare-commit-msg](https://github.com/aitemr/awesome-git-hooks/tree/master/prepare-commit-msg) - Called after receiving the default commit message, just prior to firing up the commit message editor.\n- [pre-receive](https://github.com/aitemr/awesome-git-hooks/tree/master/pre-receive) - This is called on the remote repo just before updating the pushed refs.\n- [commit-msg](https://github.com/aitemr/awesome-git-hooks/tree/master/commit-msg) - Can be used to adjust the message after it has been edited in order to ensure conformity to a standard or to reject based on any criteria.\n- [pre-push](https://github.com/aitemr/awesome-git-hooks/tree/master/pre-push) - Called prior to a push to a remote. In addition to the parameters, additional information, separated by a space is passed in through stdin in the form of `\u003clocal ref\u003e \u003clocal sha1\u003e \u003cremote ref\u003e \u003cremote sha1\u003e`.\n- [pre-auto-gc](https://github.com/aitemr/awesome-git-hooks/tree/master/pre-auto-gc) - Is used to do some checks before automatically cleaning repos. \n- [pre-rebase](https://github.com/aitemr/awesome-git-hooks/tree/master/pre-rebase) - Called when rebasing a branch. Mainly used to halt the rebase if it is not desirable.\n- [applypatch-msg](https://github.com/aitemr/awesome-git-hooks/tree/master/applypatch-msg) - Can edit the commit message file and is often used to verify or actively format a patch's message to a project's standards.\n- [post-receive](https://github.com/aitemr/awesome-git-hooks/tree/master/post-receive) - This is run on the remote when pushing after the all refs have been updated. It does not take parameters, but receives info through stdin in the form of `\u003cold-value\u003e \u003cnew-value\u003e \u003cref-name\u003e`. \n- [post-rewrite](https://github.com/aitemr/awesome-git-hooks/tree/master/post-rewrite) - This is called when git commands are rewriting already committed data.\n- [post-commit](https://github.com/aitemr/awesome-git-hooks/tree/master/post-commit) - Called after a successful commit. Useful for triggering notifications, etc.\n\n## Tools\n\n- [Husky](https://github.com/typicode/husky) - Git hooks made easy.\n- [Komondor](https://github.com/orta/Komondor) - Git Hooks for Swift projects.\n- [Quickhook](https://github.com/dirk/quickhook/) - Faster Git hook (pre-commit, etc.) runner.\n- [overcommit](https://github.com/brigade/overcommit/) - A fully configurable and extendable Git hook manager.\n- [Grunt GitHooks](https://github.com/wecodemore/grunt-githooks) - Setup, manage and update your hooks with Grunt. Can be used with all languages, supports templates.\n- [Autohook](https://github.com/nkantar/Autohook) - A very, very small Git hook manager with focus on automation.\n- [Githooks](https://github.com/rycus86/githooks) - Auto-install Git hook, that supports hooks in any language checked into Git and also shared repos.\n- [Hooks](https://www.npmjs.com/package/node-hooks) - A command line git hook management tool.\n- [Lefthook](https://github.com/Arkweid/lefthook) - Fast and powerful Git hooks manager for any type of projects. \n- [pre-commit](https://github.com/pre-commit/pre-commit) - A framework for managing and maintaining multi-language pre-commit hooks.\n- [GitHooksVS](https://github.com/mstranne/GitHooksVS) - A Visual Studio extension for managing Git hooks.\n\n## Projects \n\n- [Lolcommits](https://github.com/mroth/lolcommits) - Takes a snapshot with your webcam every time you git commit code, and archives a lolcat style image with it.\n- [Podmena](https://github.com/bmwant/podmena) - Enhance your commit messages adding random emoji to it.\n- [Git::Hooks](https://github.com/gnustavo/Git-Hooks) - A framework for implementing Git (and Gerrit) hooks.\n- [App::GitHooks](https://metacpan.org/pod/App::GitHooks) -  A modular and easy to configure git hooks framework, supporting many plugins. \n- [Jig](https://pythonhosted.org/jig/) - A pre-commit hook on steroids.\n- [GitPHPHooks](https://github.com/wecodemore/GitPHPHooks) - Write your hooks in PHP, manage and organize them on a task and project level. Has an additional Hooks library on GitHub.\n- [git-hooks-php](https://github.com/BernardoSilva/git-hooks-php) - Git hooks for PHP based projects.\n- [commandbox-githooks](https://github.com/elpete/commandbox-githooks) - Git hooks for CommandBox CFML based projects.\n- [hooks4git](https://pypi.org/project/hooks4git/) - A simple, flexible and language agnostic git hook management approach.\n- [Commit Colors](https://github.com/sparkbox/commit-colors) - See a color swatch in your terminal every time you author a commit.\n\n## Articles\n\n- [Official Documentation](https://git-scm.com/docs/githooks)\n- [Git Hooks (Part I): The Basics](http://omerkatz.com/blog/2013/2/15/git-hooks-part-1-the-basics)\n- [Git Hooks (Part II): Implementing Git Hooks using Python](http://omerkatz.com/blog/2013/5/23/git-hooks-part-2-implementing-git-hooks-using-python)\n- [Atlassian Git Hooks tutorial](https://ru.atlassian.com/git/tutorials/git-hooks)\n- [Tips for using Git pre commit hook](https://codeinthehole.com/tips/tips-for-using-a-git-pre-commit-hook/)\n- [Use a boostrap shell script to use Git Hooks in Mac with PowerShell and with IntelliJ](https://wilsonmar.github.io/git-hooks/)\n- [githooks.com](https://githooks.com)\n- [How To Use Git Hooks To Automate Development and Deployment Tasks](https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks)\n- [Automate your workflow with git hooks\n](https://medium.com/backticks-tildes/how-to-automate-your-git-workflow-with-git-hooks-c905296c49bc)\n- [Automate your development workflow](https://medium.com/the-andela-way/git-hooks-beautifully-automate-tasks-stages-bfb29f42fea1)\n- [Deploying websites with a Git hook](http://ryanflorence.com/deploying-websites-with-a-tiny-git-hook/) \n- [The missing Git hooks documentation](https://longair.net/blog/2011/04/09/missing-git-hooks-documentation/)\n\n## Video Tutorials \n\n- [Introduction to Git Hooks](https://www.youtube.com/watch?v=8-JL6NOTZOw)\n- [Git hooks, practical uses (yes, even on Windows)](https://www.youtube.com/watch?v=fMYv6-SZsSo)\n- [Life’s better with Git hooks](https://www.youtube.com/watch?v=RG26-Iozg70)\n- [Husky and the Git Hooks](https://www.youtube.com/watch?v=EpxkBgd8yq8)\n\n## Support\n\nIf you have a question, find a bug, or just want to say hi, please open an [issue on GitHub](https://github.com/aitemr/awesome-git-hooks/issues/new). If you want to contribute, please read the [guide](./contributing.md).\n\n## License\n\n[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)\n\nTo the extent possible under law, [Islam Temirbek](https://aitemr.github.io) has waived all copyright and related or neighboring rights to this work.\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/aitemr%2Fawesome-git-hooks/projects"}