胆怯地拒绝安装带有 `core.hooksPath` 设置的钩子

问题描述 投票:0回答:4

我尝试运行此命令,但它总是显示此错误。请帮助我!

$ pre-commit install
[ERROR] Cowardly refusing to install hooks with `core.hooksPath` set.
hint: `git config --unset-all core.hooksPath`
python git pre-commit pre-commit.com
4个回答
12
投票
  1. 运行:

    git config --unset-all core.hooksPath
    
  2. 如果全局core.hooksPath不为空,则运行:

    git config --global --unset-all core.hooksPath
    

    但是,当然,它是全球性的,所以要小心。

    为什么预提交对于全局钩子不起作用?请参阅问题


3
投票

由于设置了全局钩子路径,您收到上述错误。

可以通过以下两种方式解决:-

  1. 取消全局钩子路径,如下:-

    git config --unset core.hooksPath
    
  2. 设置本地钩子路径如下:-

    git config --local core.hooksPath .git/hooks
    

关于这个主题有一个非常有趣的对话,我强烈建议您浏览一次:-

问题懦弱地拒绝安装带有 core.hooksPath 设置的钩子

如果这解决了您的问题,请在评论中告诉我。我对此非常好奇。


0
投票

我也遇到了这个问题,我绝对不相信作者在#1198中的回答。需要编辑个人文件/设置才能使用软件似乎对我来说是不可接受的。

无论如何,我发现的解决方法是防止

pre-commit
在安装阶段使用全局配置,您可能已经设置了
core.hookspath
。由于没有选项,我们可以通过告诉 git 使用
/dev/null
作为全局配置目录来欺骗 git,仅在安装期间:

$ XDG_CONFIG_HOME=/dev/null pre-commit install
pre-commit installed at .git/hooks/pre-commit

我不确定是否完全理解这样做的含义,但我知道当在项目上启用

pre-commit
时,我的全局 git hook 将不再运行:)


0
投票

临时设置

GIT_CONFIG=/dev/null
,持续时间为
pre-commit install

GIT_CONFIG=/dev/null pre-commit install

我没有像之前的答案建议的那样成功设置虚拟

XDG_CONFIG_HOME
。设置
GIT_CONFIG
有效。

通过我的解决方法,我愿意接受有关问题#1198的决议

不抱歉,您的解决方法很好,但您的用例不够强大,不足以保证复杂性增加和安全性降低

https://github.com/pre-commit/pre-commit/issues/1198#issuecomment-844208591

© www.soinside.com 2019 - 2024. All rights reserved.