致命错误:不是 git 仓库(或任何父目录):.git

17

致命错误:不是 git 存储库(或任何父目录): .git是我在尝试对我的存储库执行任何 git 操作时遇到的错误。 我对项目进行了一些更改,它就是这个存储库。 然后我尝试使用git status查看我的更改,并遇到了这个错误。 我在谷歌上搜索了这个错误,但没有取得任何进展。 当尝试在存储库之外的目录中执行 Git 操作时,似乎这个错误最常见,但对我来说并非如此。 我还尝试检查了文件./git/HEAD./git/logs/refs/heads,这两个文件都是空的。 ./git/logs/refs/remotes/origin/master也是空的。

所以从一开始:

  • 我在其中一台计算机上创建了一个 Android 项目。
  • 我在此目录中启动了 git 并将其发布到 github 上。
  • 我按照通常的在线指南将此存储库拉到其他 2 台计算机上。
  • 在另一台计算机上进行了一些更改,将更改推送到存储库。
  • 然后在原始计算机上成功地拉取了更改。
  • 几天没有在项目上工作后,在原始计算机上进行了一些更改,尝试 git status,就发生了这种情况。

5个回答

19
在我的情况下,.git/HEAD文件被一些未知字符弄乱了,但是.git/ORIG_HEAD文件是正常的(它有提交 ID)。所以,我将.git/ORIG_HEAD的内容复制到.git/HEAD文件中。然后重新启动 IDE(Aptana),一切都正常工作了。

2
当我的电脑崩溃后,我在.git/HEAD文件中看到了一堆NULL字符,遇到了这个问题。我注意到的第一个症状是在看到“'git log' failed with code 128: fatal: Not a git repository...”消息后,历史记录中的所有内容都完全丢失了。这个巧妙的举动恢复了一切。 - RacerNerd
对我来说,.git/ORIG_HEAD也受到了损坏,但是当你使用你认为存在的修订版本还原.git/HEAD时,一切都恢复正常了,你可以快速找出你实际上在哪个分支/提交上。 - dCSeven
在蓝屏之后,我遇到了同样的情况。 在我的情况下,从.git/ORIG_HEAD复制内容到.git/HEAD并没有起作用。 解决方案是手动更新.git/HEAD的内容,例如ref: refs/heads/your-branch-name。 您可以在.git/refs文件夹下找到现有的分支(可以直接从那里复制路径)。 - Pavel Gurecki

7

请确保您当前的会话环境中没有设置GIT_DIRGIT_WORK_TREE环境变量,否则可能会指向错误的文件夹。

如果有疑问,请尝试执行:

cd /path/to /your/repo
git --git-dir .git --work-tree . status

如果仍然失败,请尝试从GitHub重新克隆该存储库,并将最近的更改添加到新的存储库中。
cd /path/to/new/clone
git --git-dir .git --work-tree /path/to /your/repo add .

(并继续在该新克隆中工作)

我无法在我的存储库路径中使用任何git命令。任何git命令都只返回“不是存储库”的错误。我还能用什么其他方法检查我的GIT_DIR或GIT_WORK_TREE? - xyals
@user2804884,你尝试过我在答案中提到的第一个git命令吗? - VonC
1
我在我的代码库路径下尝试了这个,但它返回了相应的错误。 - xyals
@user2804884,你的代码库路径里还有.git文件夹吗? - VonC

6
我也曾遇到同样的问题。问题出在我的git文件夹被UbuntuOne云服务同步了。它添加了以u1conflict结尾的文件,弄乱了文件。而且我的.git/HEAD也被搞乱了,变成了.git/HEAD.u1conflict。
你是否在使用任何云协作服务来管理git?如Dropbox、UbuntuOne等。有可能在同步过程中,你的.git文件夹已经被弄乱了。

1

git init 解决了我的问题。事实上,没有任何 .git 文件夹。


0

确保目录/存储库名称与原始名称完全一致。我刚刚处理了这个错误,那就是原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接