Git Hooks 配置
设置 Git hooks 用于自动化代码质量检查和工作流程执行
概述
Git hooks 可以在提交和推送前自动执行代码质量检查。Cowork 能够生成定制化的 hooks 脚本,用于代码检查、格式化验证、提交信息规范等场景。
适用场景
- 在提交前自动运行 ESLint、Prettier 等代码检查工具
- 强制执行团队的提交信息规范(如 Conventional Commits)
- 防止将调试代码(如 console.log)提交到仓库
- 在推送前运行测试套件确保代码质量
操作步骤
规划 Hook 需求
首先明确需要在哪些 Git 操作节点执行什么检查。
我想为 ~/Projects/myapp/ 下的 JavaScript 项目设置 Git hooks,请创建:
-
pre-commit hook(提交前):
- 对暂存的文件运行 ESLint
- 运行 Prettier 格式检查
- 阻止包含 console.log 的提交
-
commit-msg hook(提交信息):
- 强制使用约定式提交格式
- 要求包含工单引用(PROJ-XXX)
-
pre-push hook(推送前):
- 运行完整测试套件
- 检查 TODO/FIXME 注释
- 阻止直接推送到 main 分支
生成并安装 Hooks
让 Claude 生成脚本并安装到正确位置。
将 hooks 保存到 .git/hooks/ 目录并设置为可执行
测试 Hooks
创建一个测试提交来验证 hooks 是否正常工作:
测试 pre-commit hook
git add .
git commit -m “test commit”
如果有问题,hooks 会阻止提交并显示错误信息
确保团队成员都安装了 hooks 所需的依赖工具(如 ESLint、Prettier)。可以考虑使用 husky 或 lefthook 来统一管理和分发 hooks。
保持 hooks 执行速度快。如果检查耗时过长,开发者可能会选择跳过它们。对于耗时的测试,考虑只在 pre-push 阶段运行。
常见问题
Q: 紧急情况下如何跳过 hooks?
A: 可以使用 git commit --no-verify 或 git push --no-verify 跳过检查,但应谨慎使用。
Q: 如何在团队中共享 hooks?
A: 推荐使用 husky(npm 包)将 hooks 配置纳入版本控制,团队成员执行 npm install 后自动安装 hooks。
Q: hooks 脚本在 Windows 上能用吗? A: Git hooks 是 shell 脚本,在 Windows 上需要通过 Git Bash 执行。如果团队有 Windows 用户,建议使用 husky 等工具来处理跨平台兼容性。