I get this error when I try to commit.
OS - Latest OSX
Git version - git version 2.11.0 (Apple Git-81)
.git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file or directory
I get this error when I try to commit.
OS - Latest OSX
Git version - git version 2.11.0 (Apple Git-81)
.git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file or directory
pre-commit hook runs first when you try to commit changes, it can be used to do certain checks, tests, conditions. In this case, clearly, you don't have it, that's why it's complaining.
Go to .git/hooks
directory and remove pre-commit
file, as its trying to reference to node_modules/pre-commit/hook
. It should resolve it.
Other option is append your commit with option: --no-verify
, it will make the commit without checking.
You should delete node_modules
folder and install again running npm install
or yarn install
. After it, you probably solve the problem.
If the script files are actually present, then the cause may be that the first line of the script should be something like:
#!/bin/sh
Otherwise you get the same error.
Any file will work -- e.g., /bin/bash
, /usr/local/bin/python3
-- as long as it exists and is executable.
Following @Mutant tip, the simple answer for me was:
rm .git/hooks/pre-commit
Working from macOS, my issue was that Python3 was originally installed via Homebrew, and after I upgraded Python3 via brew update && brew upgrade
, I got the same error.
To fix this, I needed to update the symbolic links in the directory that the shebang (#!
) line in the .git/hooks/pre-commit
file points to.
Here's how I fixed this in my environment:
Look at the contents of the .git/hooks/pre-commit
:
cat .git/hooks/pre-commit
The first few lines should look something like:
#!/usr/local/opt/pre-commit/libexec/bin/python3
# File generated by pre-commit: https://pre-commit.com
# ID: 0123456789abcdef0123456789abcdef
import os
import sys
Take note of the path to the python3
executable in the shebang line:
/usr/local/opt/pre-commit/libexec/bin/
cd
into that directory.
cd /usr/local/opt/pre-commit/libexec/bin/
Take at look at the Python symlinks:
ls -l | grep python
You'll see some symlinks that are probably broken:
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
Quick note: In case something goes wrong or my answer isn't the solution, you might want to back up these symlinks first by running:
mv python python.bak
mv python3.9 python3.9.bak
mv python3 python3.bak
Update the symbolic links using ln -s [PATH] [LINK]
, where [PATH]
is the location of the Homebrew-updated Python3 executable and [LINK]
is python
, python3.9
, and 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
When you've done that, list your Python symlinks again.
ls -l | grep python
You should see the updated symlinks, and git commit
should now work.
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
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"
This command resolved my issue !!
I got that error after I was played with brew to make yarn work in Webstorm.
The fix is just re-install pre-commit again.
brew install pre-commit
Nothing helps me but remove local repo and clone it again. This kinda error appears when I accidentically tried commit and push changes to master..
If you look at your package.json you will get a better idea about the problem. Husky is npm dependency so basically you got the error because for some reason it's not available. So, option one run
npm i
Or if you already did that
rm -rf node_modules
npm i
I had installed pre-commit using homebrew, and installed the pre-commit-vscode extension and got this error.
What solved this was to also run pre-commit install
from the root of the git repo.
In my case in Mac OS, upgrading python3
via brew somehow messed up python3
location whereas the shebang
in pre-commit
was was still pointing to the old python3
location. So finding new python3
location via which python3
and updating same in pre-commit
and other scripts under .githooks
folder did fixed the issue.