Git'致命的:没有这样的ref:HEAD'

一个奇怪的事情发生在我的git仓库。 当我尝试在tortoisegit窗口中提交某些东西时,我会收到项目中的所有文件。 我无法恢复他们,当我从服务器拉我收到fatal: No such ref: HEADfatal: Cannot lock the ref 'HEAD' 。 我所有的当地分店都失踪了。 有没有办法解决这个问题?

这不是第一次提交或什么的。 这件事突然发生。

编辑:

git branch -a说: Failed to resolve HEAD as a valid ref

git status打印标记为新文件的所有项目文件。

我更改了资料库文件夹名称一段时间,当我改回它的东西是不正确的。

你已经失去了你的头,所以你需要重新创build它。 最简单的事情是这样的。

 echo ref: refs/heads/master >.git/HEAD 

现在你应该可以运行其他的git命令,看看你在哪里。

(虽然,理论上你可以尝试做git symbolic-ref HEAD refs/heads/master新版本的git版本不能识别.git作为一个git版本库,除非它已经包含了一个HEAD所以这将无法创build一个新的一个。)

HEAD通常是对特定分支的引用; 在你的情况下,似乎分支指针已经失踪,所以HEAD引用无法parsing。

你可以使用git fsck --lost-found来扫描对象caching中不可达的对象; 具体而言,您对提交感兴趣,可以在下面find.git/lost-found/commit/ ; 这些是你的分支的指针,所有你需要做的是找出哪个是哪个,并使用git branch创build新的引用。

我认为这个答案可能对某人有帮助。 我几乎解决了这个问题。 首先,我所做的就是像Charles Bailey写的那样使用

 echo ref: refs/heads/master >.git/HEAD 

然后我的分支变成了主人。 我承诺的变化,并能够切换到我的主要分支。 问题是我不能使用我的任何当地分支机构。 特别是我想在分支812上工作。所以我发现最后一次提交分支812(创build消息,当提交是非常有用的;)),并切换到它。 接下来我创build了基于我切换到的分支812。 不幸的是一些文件丢失。 幸运的是,我把它们放在了我之前复制的“回声”

对于我来说,问题是在Mac OS X上设置了“uchg”或“uappnd”标志,locking了一些git文件,而不考虑perms。 我重置了这样的chflags,它为我解决了这个问题:

 sudo chflags -R 0000 .