⚙️ 自动化

Git Hooks 配置

设置 Git hooks 用于自动化代码质量检查和工作流程执行

★★★ 高级 25 min 2025年1月13日

概述

Git hooks 可以在提交和推送前自动执行代码质量检查。Cowork 能够生成定制化的 hooks 脚本,用于代码检查、格式化验证、提交信息规范等场景。

适用场景

  • 在提交前自动运行 ESLint、Prettier 等代码检查工具
  • 强制执行团队的提交信息规范(如 Conventional Commits)
  • 防止将调试代码(如 console.log)提交到仓库
  • 在推送前运行测试套件确保代码质量

操作步骤

1

规划 Hook 需求

首先明确需要在哪些 Git 操作节点执行什么检查。

我想为 ~/Projects/myapp/ 下的 JavaScript 项目设置 Git hooks,请创建:

  1. pre-commit hook(提交前):

    • 对暂存的文件运行 ESLint
    • 运行 Prettier 格式检查
    • 阻止包含 console.log 的提交
  2. commit-msg hook(提交信息):

    • 强制使用约定式提交格式
    • 要求包含工单引用(PROJ-XXX)
  3. pre-push hook(推送前):

    • 运行完整测试套件
    • 检查 TODO/FIXME 注释
    • 阻止直接推送到 main 分支
2

生成并安装 Hooks

让 Claude 生成脚本并安装到正确位置。

将 hooks 保存到 .git/hooks/ 目录并设置为可执行

3

测试 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-verifygit push --no-verify 跳过检查,但应谨慎使用。

Q: 如何在团队中共享 hooks? A: 推荐使用 husky(npm 包)将 hooks 配置纳入版本控制,团队成员执行 npm install 后自动安装 hooks。

Q: hooks 脚本在 Windows 上能用吗? A: Git hooks 是 shell 脚本,在 Windows 上需要通过 Git Bash 执行。如果团队有 Windows 用户,建议使用 husky 等工具来处理跨平台兼容性。