Skip to content
字数
908 字
阅读时间
4 分钟

简单来说,这个错误信息的意思是:你的 Git 被配置为在每次提交(commit)时运行一个名为 pre-commit 的代码检查工具,但它在当前这个项目中找不到该工具的配置文件 (.pre-commit-config.yaml),因此阻止了你的提交。

这个 pre-commit 工具就像一个代码质量的“守门员” 🧐。


详细解释

什么是 pre-commit

pre-commit 是一个开发工具,它可以在你执行 git commit 命令之后、但 Git 正式创建提交记录之前,自动运行一些预设的检查脚本。

  • 目的:自动检查代码格式、语法错误、代码风格等,确保提交到仓库的代码质量。

  • 工作方式:它通过一个名为 .pre-commit-config.yaml 的配置文件来得知需要运行哪些检查。

为什么会看到这个错误?

你看到这个错误,说明你的开发环境中已经安装了 pre-commit 并将其设置为了 Git 钩子(hook)。当你试图提交时,发生了以下事情:

  1. 你运行了 git commit 命令。

  2. Git 自动触发了 pre-commit 钩子。

  3. pre-commit 工具开始工作,它在你的项目根目录寻找它的指令文件——.pre-commit-config.yaml

  4. 没有找到这个文件,不知道该执行哪些检查,于是就报错并中断了提交过程。

这通常发生在你克隆了一个新项目,或者在一个没有配置 pre-commit 的旧项目里,而你的 Git 却全局或局部安装了它的钩子。


如何解决?

你有以下几种选择,具体取决于你的目的:

方案一:为项目配置 pre-commit (推荐)

如果你希望在这个项目中使用代码自动检查功能,那么你应该创建一个配置文件。

  1. 在你的项目根目录下创建一个名为 .pre-commit-config.yaml 的文件。

  2. 在文件中添加你需要的检查规则。下面是一个简单的例子,它会自动修正行尾多余的空格:

    YAML

    repos:
    -   repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v4.6.0
        hooks:
        -   id: trailing-whitespace
        -   id: end-of-file-fixer
  3. 保存文件后,重新执行你的 git commit 命令即可。

方案二:临时跳过检查 (用于单次提交)

如果你只是想这一次提交时跳过检查,并不想修改项目配置,可以使用 Git 的 --no-verify 参数。

Bash

git commit --no-verify -m "Your commit message"

或者,针对你原来使用的那个复杂命令:

Bash

git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file - --no-verify

这个方法会跳过所有的 pre-commit 和 commit-msg 钩子,是临时的“强制通行证”。

方案三:在这个项目中永久禁用 pre-commit

如果你确定这个项目完全不需要 pre-commit 工具,你可以将它从这个项目的 Git 钩子中卸载。

在你的项目根目录下运行以下命令:

Bash

pre-commit uninstall

这个命令只会影响当前项目,不会影响其他配置了 pre-commit 的项目。


总结一下:

  • 想用它 -> 创建 .pre-commit-config.yaml 文件 (方案一)。

  • 就这次不想用它 -> 在 git commit 命令后加上 --no-verify (方案二)。

  • 在这个项目里永远不想用它 -> 运行 pre-commit uninstall (方案三)。

贡献者

页面历史