我创建了一个预提交挂钩,它接受数据库转储并将其保存在我的应用程序/文件夹下的文件中,该文件也在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
我尝试直接通过命令提示符运行预提交代码,它没有任何错误但是当我尝试通过git bash提交代码时出现此错误
fatal: Not a git repository: '.git'
我假设它是因为预提交文件中使用的git命令,任何人都可以告诉我这个文件中有什么错误以及我应该如何修改它
答案 0 :(得分:9)
有疑问,在您的钩子中,明确设置git-dir
和work-tree
参数:
git --git-dir .git --work-tree . add ...
你甚至可以把完整的路径放在一边:
git --git-dir D:/xampp/htdocs/app/application/.git --work-tree D:/xampp/htdocs/app/application/. add ...
通过这种方式,您可以排除那些git-dir
或work-tree
陷入另一条路径的环境问题,而这条路径不是您正在进行的回购协议之一。
有关该问题的示例,请参阅“Calling 'git pull
' from a git post-update
hook”。
答案 1 :(得分:1)
我和你一样有同样的问题并找到了这个解决方案:
而不是
cd D:/xampp/htdocs/app/application
git add [database].sql
我只是做了
git add D:/xampp/htdocs/app/application/[database].sql
这样我就不会因为进入另一个文件夹而激怒git:)
答案 2 :(得分:0)
确保您在目录中有.git文件夹? 确保,尝试运行
git status
看看会发生什么。如果你仍然收到这样的消息,我认为你的git尚未建立。
按照以下步骤进行设置:
git init
git add .
git commit -m "your message"
git push