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
来对所有文件执行一遍钩子。