Git 钩子(Git Hooks)介绍
概述
Git 钩子是在 Git 仓库中特定事件发生时自动运行的脚本,分为客户端钩子和服务器端钩子。它们位于 .git/hooks 目录下,默认以 .sample 结尾的示例文件需要重命名(去掉 .sample)才能生效。
钩子类型
客户端钩子
1. 提交工作流钩子
- prepare-commit-msg:在默认提交信息创建后、编辑器打开前运行
- post-commit:在提交完成后运行,用于通知等操作
commit-msg:在用户输入提交信息后运行,用于验证提交信息格式
# 示例:要求提交信息符合规范
if ! grep -qE "^(feat|fix|docs|style|refactor|test|chore): " "$1"; then
echo "提交信息必须符合规范:<类型>: <描述>"
exit 1
fi
pre-commit:在提交消息输入前运行,用于检查代码风格、运行测试等
# 示例:检查是否有调试语句
if git diff --cached | grep -q "console.log"; then
echo "发现 console.log 语句,请检查!"
exit 1
fi
2. 电子邮件工作流钩子
- 应用于
git am命令的补丁应用流程
3. 其他客户端钩子
- pre-rebase:变基前运行
- post-merge:合并后运行
pre-push:推送到远程前运行
# 示例:推送前运行测试
npm test
if [ $? -ne 0 ]; then
echo "测试失败,推送中止"
exit 1
fi

