进阶与大仓实践69 条

Git 钩子总览

钩子在提交、推送、合并等关键时刻自动执行:客户端钩子(pre-commit、commit-msg、pre-push 等)与服务端钩子(pre-receive 等)用途不同。

Git 与协作速查开发更新于 2026-10-12
位置.git/hooks/(样例带 .sample 后缀)
启用去掉后缀并赋予可执行权限
特点不进版本库、不随 clone 分发;退出码非 0 会中断当前操作

常用钩子

钩子触发时机典型用途
pre-commit提交前格式检查、敏感信息扫描
commit-msg提交信息生成后提交信息规范校验
pre-push推送前跑单测、阻止不合规分支
pre-receive服务端接收推送时统一强制策略
post-checkout检出后生成环境文件、提示

钩子目录示例

钩子目录示例
.git/hooks/
  pre-commit.sample
  commit-msg.sample
# 启用:mv pre-commit.sample pre-commit && chmod +x pre-commit

易错点

  • 钩子放在 .git 下不受版本控制,团队需用 hooksPath 或工具方案分发
  • 客户端钩子可被 --no-verify 跳过,强约束必须放在服务端或 CI

数据来源与参考

  • Git 官方文档:githooks
  • Pro Git 2nd Edition · 8.3 Git 钩子
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌