Jit*_*yas 23 git pre-commit pre-commit-hook
我尝试提交时收到此错误.
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
Run Code Online (Sandbox Code Playgroud)
Mut*_*ant 41
当您尝试提交更改时,pre-commit hook首先运行,它可用于执行某些检查,测试和条件.在这种情况下,显然,你没有它,这就是为什么它在抱怨.
转到.git/hooks
目录并删除pre-commit
文件,因为它试图引用node_modules/pre-commit/hook
.它应该解决它.
其他选项是使用选项附加您的提交:--no-verify
它将在不进行检查的情况下进行提交.
Roh*_*pta 10
如果脚本文件确实存在,那么原因可能是脚本的第一行应该类似于:
#!/bin/sh
否则你会得到同样的错误。
任何文件都可以工作——例如,/bin/bash
——/usr/local/bin/python3
只要它存在并且可执行。
在 macOS 上工作,我的问题是 Python3 最初是通过 Homebrew 安装的,在我通过 升级 Python3 后brew update && brew upgrade
,我得到了同样的错误。
为了解决这个问题,我需要更新文件中 shebang ( #!
) 行.git/hooks/pre-commit
指向的目录中的符号链接。
以下是我在我的环境中解决此问题的方法:
看看下面的内容.git/hooks/pre-commit
:
cat .git/hooks/pre-commit
Run Code Online (Sandbox Code Playgroud)
前几行应该类似于:
#!/usr/local/opt/pre-commit/libexec/bin/python3
# File generated by pre-commit: https://pre-commit.com
# ID: 0123456789abcdef0123456789abcdef
import os
import sys
Run Code Online (Sandbox Code Playgroud)
python3
记下shebang 行中可执行文件的路径:
/usr/local/opt/pre-commit/libexec/bin/
Run Code Online (Sandbox Code Playgroud)
cd
进入该目录。
#!/usr/local/opt/pre-commit/libexec/bin/python3
# File generated by pre-commit: https://pre-commit.com
# ID: 0123456789abcdef0123456789abcdef
import os
import sys
Run Code Online (Sandbox Code Playgroud)
看一下 Python 符号链接:
/usr/local/opt/pre-commit/libexec/bin/
Run Code Online (Sandbox Code Playgroud)
您会看到一些可能已损坏的符号链接:
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
Run Code Online (Sandbox Code Playgroud)
快速说明:如果出现问题或我的答案不是解决方案,您可能需要首先运行以下命令来备份这些符号链接:
cd /usr/local/opt/pre-commit/libexec/bin/
Run Code Online (Sandbox Code Playgroud)
ls -l | grep python
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
使用 更新符号链接ln -s [PATH] [LINK]
,其中[PATH]
是 Homebrew 更新的 Python3 可执行文件的位置,是[LINK]
、和:python
python3.9
python3
mv python python.bak
Run Code Online (Sandbox Code Playgroud)
mv python3.9 python3.9.bak
Run Code Online (Sandbox Code Playgroud)
mv python3 python3.bak
Run Code Online (Sandbox Code Playgroud)
完成后,再次列出您的 Python 符号链接。
ln -s /usr/local/Cellar/python@3.9/3.9.4/Frameworks/Python.framework/Versions/3.9/bin/python3.9 python
Run Code Online (Sandbox Code Playgroud)
您应该看到更新的符号链接,并且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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16292 次 |
最近记录: |