git hooks

钩子(hooks)是在.git/hooks目录的脚本, 在被特定的事件触发后被调用。

参考文档

目录:.git/hooks/

当git init命令执行后

非0值意味着钩子执行失败,将中断操作; 0值意味着钩子执行成功,不中断操作;

客户端hooks

  • pre-commit:执行git commit命令时触发,使用 –no-verify参数可以跳过该钩子(常用于检查代码风格)

  • prepare-commit-msg:执行git commit命令后,在默认提交消息准备好后但编辑器(editor)启动前,且使用 –no-verify参数不会跳过该钩子(常用于生成默认的标准化的提交说明)

  • commit-msg:开发者编写完并确认commit message后触发(常用于校验提交说明是否标准)

  • post-commit:整个git commit完成后触发(常用于邮件通知、提醒)

  • applypatch-msg: 执行git am命令时触发(常用于检查命令提取出来的提交信息是否符合特定格式)

  • pre-applypatch: git am提取出补丁并应用于当前分支后,准备提交前触发(常用于执行测试用例或检查缓冲区代码)

  • post-applypatch: git am提交后触发,此钩子不能停止git am过程(常用于通知、或补丁邮件回复)

  • pre-rebase: 执行git rebase命令时触发

  • post-rewrite: 执行会替换commit的命令时触发,比如git rebase或git commit –amend

  • post-checkout: 执行git checkout命令成功后触发,可用于生成特定文档,处理大二进制文件等

  • post-merge: 成功完成一次 merge行为后触发

  • pre-push: 执行git push命令时触发,可用于执行测试用例

  • pre-auto-gc: 执行垃圾回收前触发

服务端hooks

  • pre-receive: 当服务端收到一个push操作请求时触发,可用于检测push的内容

  • update: 与pre-receive相似,但当一次push想更新多个分支时,pre-receive只执行一次,而此钩子会为每一分支都执行一次

  • post-receive: 当整个push操作完成时触发,常用于服务侧同步、通知

颜色