Repolode
sds

sds/overcommit

一款可配置的 Git hook 管理工具,在提交、推送等 Git 事件时运行检查与脚本。

Star
4,005
Fork
291
未关闭 Issue
34
最近提交
20小时前

这是什么?

Overcommit 为代码仓库统一管理 Git hook,让 lint、测试、格式化等检查在 pre-commit、commit-msg、pre-push、post-checkout 等节点自动运行。每个仓库通过 .overcommit.yml 进行配置,可以启用或禁用单个 hook、指定其作用的文件范围,并调整并行执行和失败处理等选项。

项目内置了大量 hook,覆盖 Ruby(RuboCop、RSpec)、JavaScript(ESLint、Stylelint)、Python(Pylint、Flake8)、Go、PHP、Java、Shell 等语言和工具,并提供去除行尾空白、检测合并冲突标记、限制文件大小等通用检查。团队既可以用 Ruby 编写仓库专属的 hook,也可以在不写 Ruby 代码的情况下,直接把已有的脚本注册为 hook。

配置可以通过版本控制共享,个人则可以用 .local-overcommit.yml 做本地覆盖。Overcommit 还会记录 hook 代码和配置的签名,当他人修改后,在运行前给出提示。

核心功能

  • 01支持 pre-commit、commit-msg、pre-push、post-checkout 等多种 Git 事件。
  • 02内置大量常用语言的 lint 和测试工具 hook。
  • 03无需编写 Ruby 代码,即可把已有脚本接入为 hook。
  • 04可按 hook 设置文件过滤、分支排除和并行执行。
  • 05提供 --run 模式,可在 CI 中检查整个仓库。

适用场景

  • 团队仓库中每次提交前自动运行 RuboCop 或 ESLint。
  • 阻止推送到受保护分支,或拦截含有合并冲突标记的提交。
  • 在 CI 中运行与开发者本地提交前相同的检查集合。

快速上手

  1. 1

    通过 RubyGems 安装 overcommit gem

    gem install overcommit
  2. 2

    进入你的仓库目录并在需要时初始化 Git

    git init
  3. 3

    在仓库中安装 Overcommit 钩子

    overcommit --install

使用前须知

  • 部分钩子依赖第三方工具(例如 scss_lint),需要你自行安装。
  • 需要 Ruby 环境,要求 *nix 系统上 Ruby 2.6+,Windows 仅提供尽力而为的支持。

收录于专题

标签

常见问题

overcommit 是什么?
一款可配置的 Git hook 管理工具,在提交、推送等 Git 事件时运行检查与脚本。 Overcommit 为代码仓库统一管理 Git hook,让 lint、测试、格式化等检查在 pre-commit、commit-msg、pre-push、post-checkout 等节点自动运行。每个仓库通过 .overcommit.yml 进行配置,可以启用或禁用单个 hook、指定其作用的文件范围,并调整并行执行和失败处理等选项。
overcommit 可以免费使用吗?用的什么许可证?
overcommit 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
overcommit 还在维护吗?
活跃维护中。overcommit 最近一次提交是在 2026年11月6日。
overcommit 适合用来做什么?
团队仓库中每次提交前自动运行 RuboCop 或 ESLint。 阻止推送到受保护分支,或拦截含有合并冲突标记的提交。 在 CI 中运行与开发者本地提交前相同的检查集合。
overcommit 怎么安装和运行?
通过 RubyGems 安装 overcommit gem: gem install overcommit 进入你的仓库目录并在需要时初始化 Git: git init 在仓库中安装 Overcommit 钩子: overcommit --install
在哪里获取 overcommit?
源代码和安装说明在 GitHub 上:https://github.com/sds/overcommit

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目