钩子(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操作完成时触发,常用于服务侧同步、通知