pre-commit
已于 2025年05月15日 13:11 修改
访问次数:0
pre-commit 是一个非常流行的 Git 钩子(hook)管理工具,用于在代码提交前自动运行代码检查、格式化、静态分析等任务,确保代码质量。
✅ 简要定义:
pre-commit 是一个框架,允许你在 git commit 之前运行一系列自动化的脚本(如代码格式化、lint、检查 secrets、强制代码风格等)。
🚀 为什么使用 pre-commit?
- 保证提交前的代码质量(自动检查和格式化)
- 防止低级错误(比如没格式化、加了调试代码、留下 print()、或提交了大文件)
- 团队协作时统一代码风格
- 避免把 secrets / 密钥意外提交到仓库
🔧 如何使用 pre-commit(入门步骤)
1️⃣ 安装 pre-commit
pip install pre-commit
或者用 brew(macOS):
brew install pre-commit
2️⃣ 添加配置文件 .pre-commit-config.yaml
在你的项目根目录下创建一个 .pre-commit-config.yaml 文件,例如:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0 # 指定版本
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- repo: https://github.com/psf/black
rev: 24.3.0
hooks:
- id: black
3️⃣ 安装 Git 钩子到你的仓库
pre-commit install
这会在 .git/hooks 下注册一个钩子,让它在每次 git commit 时自动运行。
4️⃣ 测试运行
你可以手动触发钩子运行对所有文件检查:
pre-commit run --all-files
📦 常见 Hook 示例(你可以选用)
| Hook 名称 | 用途 |
|---|---|
black | 自动格式化 Python 代码 |
flake8 | Python lint 工具 |
isort | 自动整理 import 顺序 |
trailing-whitespace | 删除行尾空格 |
end-of-file-fixer | 确保文件末尾有换行符 |
check-yaml | 检查 YAML 格式合法性 |
detect-secrets | 检查代码中是否含有 secrets(如密钥) |
💡 高级功能
- 可以为不同的文件类型/路径定义不同的 hook
- 支持自定义 hook 脚本
- 支持 pre-push、commit-msg 等其他 Git 钩子阶段
- 与 CI 集成(如 GitHub Actions、GitLab CI 等)
🧪 示例:添加 Python 代码检查的完整配置
repos:
- repo: https://github.com/pre-commit/mirrors-flake8
rev: v6.1.0
hooks:
- id: flake8
- repo: https://github.com/psf/black
rev: 24.3.0
hooks:
- id: black
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
📚 官方文档
- 官网:🔗 https://pre-commit.com
- 配置库参考:🔗 https://github.com/pre-commit/pre-commit-hooks
如果你告诉我你的项目语言或需求,我可以帮你定制一个 .pre-commit-config.yaml 示例配置。
评论(0)