pre-commit / hook:没有这样的文件或目录

时间:2017-05-12 08:56:33

标签: git pre-commit-hook pre-commit

我尝试提交时收到此错误。

OS - 最新的OSX

Git版本 - git版本2.11.0(Apple Git-81)

.git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file or directory

7 个答案:

答案 0 :(得分:30)

当您尝试提交更改时,

预提交挂钩首先运行,它可用于执行某些检查,测试和条件。在这种情况下,显然,你没有它,这就是为什么它在抱怨。

转到.git/hooks目录并删除pre-commit文件,因为它试图引用node_modules/pre-commit/hook。它应该解决它。

其他选项是使用选项--no-verify附加您的提交,它将在不进行检查的情况下进行提交。

答案 1 :(得分:5)

您应该删除node_modules文件夹并再次安装npm installyarn install。在它之后,你可能解决了这个问题。

答案 2 :(得分:1)

在 macOS 上工作,我的问题是 Python3 最初是通过 Homebrew 安装的,在我通过 brew update && brew upgrade 升级 Python3 后,我遇到了同样的错误。

为了解决这个问题,我需要更新 #! 文件中的 shebang (.git/hooks/pre-commit) 行指向的目录中的符号链接。

以下是我在我的环境中修复此问题的方法:

  1. 看看.git/hooks/pre-commit的内容:

    cat .git/hooks/pre-commit
    

    前几行应该类似于:

    #!/usr/local/opt/pre-commit/libexec/bin/python3
    # File generated by pre-commit: https://pre-commit.com
    # ID: 0123456789abcdef0123456789abcdef
    import os
    import sys
    

    记下 shebang 行中 python3 可执行文件的路径:

    /usr/local/opt/pre-commit/libexec/bin/
    
  2. cd 进入该目录。

    cd /usr/local/opt/pre-commit/libexec/bin/
    
  3. 看看 Python 符号链接:

    ls -l | grep python
    

    您会看到一些可能已损坏的符号链接:

    lrwxr-xr-x  1 user  group    91 Apr  5 13:33 python -> /usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
    lrwxr-xr-x  1 user  group    91 Apr  5 13:33 python3.9 -> /usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
    lrwxr-xr-x  1 user  group    91 Apr  5 13:33 python3 -> /usr/local/Cellar/python@3.9/3.9.2_4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
    

    快速说明:如果出现问题或我的答案不是解决方案,您可能需要先通过运行以下命令来备份这些符号链接:

    mv python python.bak
    
    mv python3.9 python3.9.bak
    
    mv python3 python3.bak
    
  4. 使用 ln -s [PATH] [LINK] 更新符号链接,其中 [PATH] 是 Homebrew 更新的 Python3 可执行文件的位置,[LINK]python,{{1} },和python3.9

    python3
    ln -s /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9 python
    
    ln -s /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9 python3.9
    
  5. 完成后,再次列出您的 Python 符号链接。

    ln -s /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9 python3
    

    您应该会看到更新后的符号链接,ls -l | grep python 现在应该可以工作了。

    git commit

答案 3 :(得分:0)

如果脚本文件确实存在,则原因可能是脚本的第一行应该是

2020-08-13 23:59:59.999

否则,您将收到相同的错误。

答案 4 :(得分:0)

found_tuples = [('A','C','B')] 内的钩子中删除pre-commit对我有用

答案 5 :(得分:-1)

INGW64 ~/code/ingestor-gdelt (test-build)
$ git commit -m "your comment"

.git/hooks/pre-commit: line 9: py: command not found

.git/hooks/pre-commit: line 10: py: command not found

git commit --no-verify -m "your comment"

这个命令解决了我的问题!!

答案 6 :(得分:-3)

只要确保在 .git 中有 hooks 文件夹即可。如果不做一个。