fatal: Not a git repository: '.git' error

2019-04-05 07:40发布

问题:

I have created a pre-commit hook which takes the database dump and saves it in a file under my application/folder which is also in the git repo, after saving it I add the file to commit list . Following is the code in my pre-commit file

    D:/xampp/mysql/bin/mysqldump -u root -pxyz --skip-extended-insert [database] > D:/xampp/htdocs/app/application/[database].sql

cd D:/xampp/htdocs/app/application
git add [database].sql

I tried to run the pre-commit code directly through command prompt it works without any error but when I try to commit the code through git bash I get this error

fatal: Not a git repository: '.git' 

I am assuming its because of the git command used in the pre-commit file, can anyone tell me whats wrong in this file and how I should amend it

回答1:

In doubt, in your hook, set up explicitly git-dir and work-tree parameters:

git --git-dir .git --work-tree . add ...

You can even put the full path to be extra-sure:

git --git-dir D:/xampp/htdocs/app/application/.git --work-tree D:/xampp/htdocs/app/application/. add ...

That way, you rule out any environment issue with those git-dir or work-tree stuck into another path which isn't the one of the repo your are cd'ing into.
See "Calling 'git pull' from a git post-update hook" for an example of that problem.



回答2:

i had the exact same issue like you and found this solution:

instead of doing

cd D:/xampp/htdocs/app/application
git add [database].sql

i simply did

git add D:/xampp/htdocs/app/application/[database].sql

that way i didn't irritate git by cd-ing into another folder :)



回答3:

make sure you're in directory which have .git folder ? to make sure, try to run

git status

and see what's happen. if you still get such message, I think your git hasn't been set up yet.

follow those steps to set up it:

git init
git add .
git commit -m "your message"
git push