致命:不是git存储库:'.git'错误

Ana*_*shi 11 git hook git-bash

我创建了一个预提交钩子,它接受数据库转储并将其保存在我的应用程序/文件夹下的文件中,该文件也在git repo中,保存后我将文件添加到提交列表中.以下是我的预提交文件中的代码

    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
Run Code Online (Sandbox Code Playgroud)

我尝试直接通过命令提示符运行预提交代码,它没有任何错误,但当我尝试通过git bash提交代码时,我得到此错误

fatal: Not a git repository: '.git' 
Run Code Online (Sandbox Code Playgroud)

我假设它是因为预提交文件中使用的git命令,任何人都可以告诉我这个文件中有什么错误以及我应该如何修改它

Von*_*onC 9

有疑问,在你的钩子中,明确设置git-dirwork-tree参数:

git --git-dir .git --work-tree . add ...
Run Code Online (Sandbox Code Playgroud)

你甚至可以把完整的路径放在一边:

git --git-dir D:/xampp/htdocs/app/application/.git --work-tree D:/xampp/htdocs/app/application/. add ...
Run Code Online (Sandbox Code Playgroud)

这样,你可以排除任何环境问题,git-dir或者work-tree进入另一条路径,而这条路径不是你正在进行的回购之一.
有关该问题的示例,请参阅" 钩子中调用"git pullgit post-update.