用途:在 Git 工作流的关键事件点自动运行脚本,用于提交前代码质量检查、自动化测试、提交信息格式校验、阻止强制推送等破坏性操作,以及在推送时触发 CI/CD。
主要能力:区分客户端钩子(pre-commit、prepare-commit-msg、commit-msg、post-commit、pre-push、post-checkout、pre-rebase)与服务端钩子(pre-receive、update、post-receive)。钩子退出码为 0 时继续 Git 操作,非 0 时中止并输出错误。
使用方式:钩子默认位于 .git/hooks/,需可执行权限,例如 chmod +x .git/hooks/pre-commit。为便于团队共享,可用 git config core.hooksPath .githooks 将钩子纳入版本控制,团队成员克隆后执行同一配置。资料给出模块化编排模式:pre-commit 作为编排器遍历 hooks.d/ 下可执行脚本,按编号前缀(10、20、30)控制顺序。示例包括校验 bash 脚本语法、校验提交信息格式、推送前运行 npm test、阻止对 main/master/production 的强制推送。
适用场景:需要统一团队提交规范、在本地尽早发现问题的仓库;也可用于服务端策略执行与 CI/CD 触发。
限制与注意:资料未提供具体收费、平台或效果数据。钩子应保持快速,避免在 pre-commit 中执行长任务;需处理输入引用以防命令注入,避免硬编码密钥;git commit --no-verify 可临时绕过全部钩子,应谨慎使用。排错时检查执行权限、core.hooksPath 配置、shebang 与依赖是否安装。