75

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
Jitendra Vyas
  • 148,487
  • 229
  • 573
  • 852
  • 8
    You have a pre-commit hook defined (in `.git/hooks/pre-commit`) and it is trying to reference `./node_modules/pre-commit/hook` which doesn't exist. If the hook is no longer needed you can just delete it. – c3st7n May 12 '17 at 09:01

14 Answers14

121

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.

Mutant
  • 3,663
  • 4
  • 33
  • 53
  • I got exactly the same error which means suggests something is wrong with the `gem webpacker` and webpack installation process; because that's what I just had done. But odd that the `pre-commit` file was last modified six months ago. But the removal of the `pre-commit` file fixed my problem. – Greg Jan 15 '18 at 05:11
  • 5
    I got same issue but it is not solved by removing `pre-commit` file. Than i tried to commit by command in terminal and add `--no-verify` command at last so my command is `git commit -m "message" --no-verify`. It is working for me. – Komal Goyani Oct 11 '19 at 04:17
  • This can happen if Lint is setup to enforce formatting rules. As @Mutant and @KomalGoyani mentioned, you can bypass the Lint check using `git commit -n (or --no-verify)` – Rickchip May 29 '20 at 21:35
18

You should delete node_modules folder and install again running npm install or yarn install. After it, you probably solve the problem.

tuomastik
  • 4,559
  • 5
  • 36
  • 48
gersonlimadev
  • 309
  • 2
  • 5
9

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.

Ian Dunn
  • 3,541
  • 6
  • 26
  • 44
Rohit Gupta
  • 4,022
  • 20
  • 31
  • 41
6

Following @Mutant tip, the simple answer for me was:

rm .git/hooks/pre-commit
Ricardo Barroso
  • 634
  • 9
  • 11
3

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:

  1. 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/
    
  2. cd into that directory.

    cd /usr/local/opt/pre-commit/libexec/bin/
    
  3. 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
    
  4. 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
    
  5. 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
    
0
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 !!

Laurent
  • 12,287
  • 7
  • 21
  • 37
  • 3
    it solves the problem temporarily, but it also skips your pre-commit task and doesn't really resolve the issue. Its just a workaround to bypass the error. – drecunion May 25 '21 at 08:52
0

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

https://pre-commit.com/

0

For anyone who is having this problem with husky, for me what solved it is running:

husky install

(which I forgot to run) The docs talk about it under usage, aka npm run prepare for one time after you set up husky. usage

Yuniac
  • 343
  • 3
  • 11
0

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..

Yaroslav
  • 486
  • 1
  • 4
  • 14
0

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
ALOUI MH
  • 97
  • 1
  • 10
0

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.

Stian
  • 1,221
  • 1
  • 19
  • 26
0

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.

Viki
  • 107
  • 1
  • 8
-3

Deleting pre-commit from hooks inside .git worked for me

-3

just make sure you have hooks folder inside of .git . if not make one.