预提交/挂钩:没有这样的文件或目录
Posted
技术标签:
【中文标题】预提交/挂钩:没有这样的文件或目录【英文标题】:pre-commit/hook: No such file or directory 【发布时间】:2017-10-11 12:33:27 【问题描述】:我在尝试提交时收到此错误。
操作系统 - 最新的 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
【问题讨论】:
您定义了一个预提交挂钩(在.git/hooks/pre-commit
中),它试图引用不存在的./node_modules/pre-commit/hook
。如果不再需要该挂钩,您可以将其删除。
【参考方案1】:
我在使用 brew 让 yarn 在 Webstorm 中工作后遇到了这个错误。
修复只是再次重新安装预提交。
brew install pre-commit
https://pre-commit.com/
【讨论】:
【参考方案2】:在 macOS 上工作,我的问题是 Python3 最初是通过 Homebrew 安装的,在我通过 brew update && brew upgrade
升级 Python3 后,我遇到了同样的错误。
为了解决这个问题,我需要更新 .git/hooks/pre-commit
文件中的 shebang (#!
) 行指向的目录中的符号链接。
这是我在环境中解决此问题的方法:
看.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/
cd
进入该目录。
cd /usr/local/opt/pre-commit/libexec/bin/
看看 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
使用ln -s [PATH] [LINK]
更新符号链接,其中[PATH]
是Homebrew 更新的Python3 可执行文件的位置,[LINK]
是python
、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
ln -s /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9 python3
完成后,再次列出 Python 符号链接。
ls -l | grep python
您应该会看到更新的符号链接,git commit
现在应该可以工作了。
lrwxr-xr-x 1 user group 89 Apr 6 13:58 python -> /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
lrwxr-xr-x 1 user group 89 Apr 6 13:58 python3 -> /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
lrwxr-xr-x 1 user group 89 Apr 6 13:58 python3.9 -> /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9
【讨论】:
【参考方案3】:INGW64 ~/code/ingestor-gdelt (test-build)
$ git commit -m "your comment"
.git/hooks/pre-commit:第 9 行:py:找不到命令
.git/hooks/pre-commit:第 10 行:py:找不到命令
git commit --no-verify -m "your comment"
这个命令解决了我的问题!!
【讨论】:
它暂时解决了问题,但它也跳过了您的预提交任务,并没有真正解决问题。它只是绕过错误的一种解决方法。【参考方案4】:只要确保在 .git 中有 hooks 文件夹。如果不做一个。
【讨论】:
【参考方案5】:从 .git
内部的钩子中删除 pre-commit
对我有用
【讨论】:
【参考方案6】:如果脚本文件确实存在,那么原因可能是脚本的第一行应该是
#!/bin/sh
否则你会得到同样的错误。
【讨论】:
【参考方案7】:您应该删除node_modules
文件夹并运行npm install
或yarn install
再次安装。之后,您可能会解决问题。
【讨论】:
【参考方案8】:当您尝试提交更改时,预提交挂钩首先运行,它可用于执行某些检查、测试、条件。在这种情况下,很明显,你没有它,这就是它抱怨的原因。
转到.git/hooks
目录并删除pre-commit
文件,因为它试图引用node_modules/pre-commit/hook
。它应该解决它。
其他选项是在您的提交后附加选项:--no-verify
,它将在不检查的情况下进行提交。
【讨论】:
我得到了完全相同的错误,这意味着gem webpacker
和 webpack 安装过程有问题;因为这就是我刚刚所做的。但奇怪的是pre-commit
文件最后一次修改是在六个月前。但是删除 pre-commit
文件解决了我的问题。
我遇到了同样的问题,但无法通过删除 pre-commit
文件来解决。比我尝试在终端中通过命令提交并最后添加--no-verify
命令,所以我的命令是git commit -m "message" --no-verify
。它对我有用。
如果 Lint 设置为强制执行格式化规则,就会发生这种情况。正如@Mutant 和@KomalGoyani 提到的,您可以使用git commit -n (or --no-verify)
绕过Lint 检查以上是关于预提交/挂钩:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章