11

我创建了一个预提交挂钩,它获取数据库转储并将其保存在我的应用程序/文件夹下的文件中,该文件也在 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 命令,谁能告诉我这个文件有什么问题以及我应该如何修改它

4

3 回答 3

10

有疑问,在您的钩子中,明确设置git-dirwork-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-dirwork-tree陷入另一条路径,该路径不是您正在进入的存储库之一。有关该问题的示例,
请参见“钩子中调用 ' '”。git pullgit post-update

于 2012-08-11T14:30:53.160 回答
1

我有和你一样的问题,并找到了这个解决方案:

而不是做

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

我只是做了

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

这样我就不会通过 cd-ing 进入另一个文件夹来激怒 git :)

于 2014-09-11T19:42:04.263 回答
0

确保你在有 .git 文件夹的目录中?确保,尝试运行

git status

看看发生了什么。如果您仍然收到此类消息,我认为您的 git 尚未设置。

请按照以下步骤进行设置:

git init
git add .
git commit -m "your message"
git push
于 2012-08-11T13:12:06.667 回答