pre-commit 是一个用于管理和维护 Git 提交前钩子的多语言框架,由 Anthony Sottile 发起。它通过一个 YAML 配置文件声明式地定义在代码提交前自动运行的检查(如格式化、静态分析),并自动安装各检查工具所需的运行环境。

| 类型 | Git 钩子管理框架 |
| 作者 | Anthony Sottile |
| 实现语言 | Python |
| 配置格式 | YAML |
| 许可证 | MIT |
pre-commit 是一个跨语言的 Git 钩子(hook)管理框架,让开发者用一个配置文件统一声明在代码提交前自动执行的检查,并自动为每个检查工具准备隔离的运行环境。它由开源开发者 Anthony Sottile 发起并维护。
Git 允许在提交、推送等操作发生时触发脚本,其中最常用的是提交前钩子。传统做法是手写 shell 脚本放到仓库的钩子目录,但这些脚本难以共享、依赖难以安装、且团队成员容易忘记启用。pre-commit 用一个名为配置文件的 YAML 文件描述要运行哪些钩子,团队成员只需执行安装命令,框架就会把自身注册为 Git 钩子,并在每次提交时自动拉取、缓存和运行所有配置的检查。
pre-commit 广泛用于开源项目和企业团队,把代码风格统一、静态检查、去除多余空白、防止大文件或密钥误提交等工作前移到提交阶段,从而减少代码评审中的机械性意见,提升合并请求质量。它常与格式化工具、静态分析工具、语言检查器搭配使用,并可通过官方托管服务在流水线中自动更新钩子版本。
问:pre-commit 只能用于 Python 项目吗?答:不是。虽然框架本身用 Python 编写,但它管理的钩子可以是任意语言编写的工具,因此适用于任何技术栈的仓库。
问:钩子太慢会拖慢提交怎么办?答:可以把耗时较长的检查配置为仅在推送阶段运行,或在持续集成中执行,让本地提交只保留快速检查。
问:团队成员绕过钩子直接提交怎么办?答:Git 钩子在本地可被跳过,因此稳妥做法是在持续集成中再运行同一套 pre-commit 配置,作为最终防线。

| 类型 | Git 钩子管理框架 |
| 作者 | Anthony Sottile |
| 实现语言 | Python |
| 配置格式 | YAML |
| 许可证 | MIT |
登录 后参与讨论
暂无讨论,来发表第一条评论吧