5

我有一个用于当前开发(本地工作副本)的 master 分支和一个 dev 分支。我需要将 master 的更改合并到我的 dev 分支上。在合并之前,我运行了 git stash 并发现了以下错误:

fatal: Not a git repository (or any of the parent directories): .git

为了调查这个错误,我运行了以下命令: git status git branch git remote -v. 都产生了同样的错误fatal: Not a git repository (or any of the parent directories): .git

我还尝试重置产生相同结果的分支的原点: git remote set-url origin https://github.com/Connexions/oer.exports.gitfatal: Not a git repository (or any of the parent directories): .git

我也无法将本地工作目录中的任何更改提交到我的开发分支。

有没有人对如何纠正这个问题有任何建议。

4

4 回答 4

16

检查以下文件:

  • your_repo_dir/.git/HEAD

如果此内容似乎已损坏,这就是问题所在。我遇到了类似的问题,我通过将 HEAD 文件的内容替换为所选分支的最后一次提交的 git commit 哈希来修复它。

提交哈希可以在下面找到.git/logs/refs/heads and branch_name_file

我希望它有所帮助。

于 2012-12-10T12:17:18.440 回答
3

获得该错误消息的一种方法是以某种方式不在git repo 工作树中。
请参阅“git clone我收到fatal: Not a git repository (or any of the parent directories): .git“错误”之后作为说明。

这也可能是因为GIT_WORK_TREE环境变量设置为错误的路径。
或者它可以在使用 git repo 的包装器中看到rvm(例如,参见这个线程

在这两种情况下,在新的克隆中重置情况(您已经这样做了)通常是解决问题的好方法。

于 2012-09-11T05:55:57.573 回答
3

在 Visual Studio git 插件出现问题后出现此错误。

解决方案是重命名my_repo_dir/.git/HEAD.lockmy_repo_dir/.git/HEAD

在锁定头文件并杀死回购后,看起来有些东西崩溃了。

于 2013-10-07T12:20:45.290 回答
2

在我尝试将分支从 Visual Studio 推送到远程后遇到了同样的问题。检查内容后,我将 .git/HEAD.lock 重命名为 .git/HEAD。现在它工作正常。

于 2014-11-13T18:21:04.727 回答