利用 Git Hooks 自动化代码质量管控
解决代码评审中低级错误的痛点:通过配置 Git 钩子(Hooks),在代码进入 CI 管道前自动完成 Lint 检查、格式化和提交信息规范校验,将问题拦截在本地提交阶段。
为什么需要这个技能
在团队开发中,由于每个人的编辑器配置不同,经常会出现代码风格不统一、遗留 console.log 或提交信息混乱(如 “fix bug”)等问题。如果依赖 CI 运行结果来反馈,开发者需要等待数分钟才能发现简单的格式错误。
通过 Git Hooks,可以在 git commit 或 git push 触发的瞬间执行自动化脚本。这意味着开发者在几秒钟内就能收到反馈,确保进入仓库的代码始终符合团队的质量底线。
适用场景
- 前端项目标准化:使用 Husky 和 lint-staged 自动运行 ESLint 和 Prettier。
- 多语言项目管控:使用
pre-commit框架统一管理 Python、Shell、YAML 等多种文件的检查规则。 - 强制提交规范:使用 commitlint 强制执行 Conventional Commits 规范(如
feat:,fix:)。 - 安全拦截:在推送前检查是否包含明文密钥或超大文件。
核心工作流
1. Node.js 项目:Husky + lint-staged
这是 JS/TS 生态的标准组合。Husky 负责管理钩子,lint-staged 确保仅对暂存区(Staged)的文件运行检查,避免全量扫描导致提交缓慢。
# 安装核心依赖
npm install --save-dev husky lint-staged
# 初始化 Husky
npx husky init
# 配置 pre-commit 钩子执行 lint-staged
echo "npx lint-staged" > .husky/pre-commit
在 package.json 中定义针对不同文件的处理逻辑:
{
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix --max-warnings=0",
"prettier --write"
]
}
}
2. 多语言项目:pre-commit 框架
对于 Python 或混合语言项目,pre-commit 提供了更强大的 YAML 配置,支持在隔离环境中运行钩子。
# .pre-commit-config.yaml 示例
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- repo: https://github.com/psf/black
rev: 24.4.2
hooks:
- id: black
3. 自定义 Shell 钩子
对于无需框架的轻量级需求,可以直接编写 Shell 脚本并设置 git config core.hooksPath .githooks 将钩子目录纳入版本控制。
下载和安装
下载 git-hooks-automation 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐