Git 钩子使用

2023-12-01
标签: git

Git 里的钩子 hook 就是在 git 的运行流程中,在指定的节点上会自动执行的脚本。

钩子默认是放在 git 仓库路径下的 $GIT_DIR/hooks 里,每个钩子都有固定的名字,并要加上可执行权限。钩子的存放路径可以通过配置 git config core.hooksPath 来更改。

常用的一些钩子如下,附件的参考链接里有两个 Github 仓库收集了一些常用的钩子脚本:

  • pre-commit:在 commit 前执行,如果钩子执行失败则不会提交 commit,这个应该是最常用的一种钩子;
  • pre-merge-commit:在 merge 前执行;
  • pre-rebase
  • pre-push
  • commit-msg:在 commit 和 merge 前触发,可以根据项目的提交规范来规范化 message,也可以拒绝提交;
  • post-commit
  • post-checkout
  • post-merge

pre-commit 是一个管理和维护多语言钩子的框架,虽然名字叫 pre-commit 但是它支持多种类型的钩子。它是一个 python 库,通过命令 pip install pre-commit 安装,在项目的根目录中添加配置文件 .pre-commit-config.yaml,写入需要加入的钩子地址等相关信息,而后通过命令 pre-commit install 自动安装钩子到 .git/hooks 目录下,新加入的钩子可以用命令 pre-commit run --all-files 来对所有文件执行一遍钩子。

参考链接

githooks - Hooks used by Git

Awesome Git Hooks

Awesome Git Hooks

pre-commit