当我想运行git branch
,git log
或在我的仓库我对着下面的错误其他命令:Git的参头文件是无效的
fatal: Failed to resolve HEAD as a valid ref.
当我打开.git/HEAD
我看到分支我期待,因为它是最后一个我工作:
ref: refs/heads/refactoring
当我在.git/refs/heads/
打开任何文件,我总是觉得有了这样的字符串单行:
2d73344af3d39ab9c89df71f6696a1b0b65cdca9
但是,如果我打开.git/refs/heads/refactoring
所有我看到的是一堆零:
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 00
所以很明显的Git不能在该分支时,有在它的头文件中没有信息进行操作。
于是两个问题:
- 这怎么会发生?
- 如何以正确的方式恢复它?
我问一个适当的方式,因为所有我能想到的是:
- 由于损坏的分支仍然签出,手动进行的所有文件的副本。
- 将HEAD文件中的ref更改为工作分支。
- 删除损坏的分支。
- 签出具有相同或不同名称的新分支。
- 添加备份中的文件并提交。
但是,这听起来太hacky为我的口味。
任何想法?
您不必手动复制文件。只需创建一个新的(临时)分支。 – musiKk 2014-09-26 09:22:41
我不能在HEAD仍然指向无效分支 – Amberlamps 2014-09-26 09:44:11
不幸的是,我不能重现这个问题,如果我尝试,我会得到不同的错误消息。但是,我认为你的解决方案如果有效就不好。您处于损坏的存储库中,因此您可能需要执行一些不寻常的步骤才能修复它。如果它有效,您也可以将其作为答案。它可能会帮助其他有相同问题的人。 – musiKk 2014-09-26 09:50:49