由于内核紧急而关闭了计算机,我在Windows上的虚拟机上丢失了git repo。当我进入.net时,出现以下错误:
corrupted loose reference file: HEAD
我有一个名为.git的文件夹,其中包含我的分支机构列表。
答案 0 :(得分:3)
您在.git
目录中显示的不是分支列表;而是这是git repo元数据的标准结构。这包括一些符号引用,例如HEAD
。当一个引用作为文件存储在磁盘上时,它被称为“松散”引用,这就是我认为错误消息所讨论的。
因此该错误似乎表明文件.git/HEAD
已损坏。这本身并不难解决(尽管大多数git命令无法正常工作,因为它们目前无法识别出这是一个回购协议,因此可能会有点麻烦);在突然的系统崩溃之后,一个更大的问题是其他任何东西是否也损坏了。但是作为起点,您可以尝试类似
# back up .git/HEAD somewhere, just in case
echo 'ref: refs/heads/master` >.git/HEAD
现在希望您的存储库将再次被识别。接下来,进行一些检查会很聪明
git fsck
,也许检查您在预期分支上是否有预期的变化。
最脆弱的是未提交的更改(尤其是未分阶段的更改)。但是,至少如果上述步骤顺利进行,您就可以评估损失并决定从那里去哪里。
答案 1 :(得分:1)
您可以将其设置为上一个阶段,而无需再次克隆存储库。您也许可以保留本地更改,但是您将丢失所有未按下的提交或存储。
这就是我要做的:
rm -rf .git
中)git init
git remote add origin <your remote repository url>
git fetch
git reset origin/<the last branch you were in>
这很重要:如果您位于
Development
分支中,则将其命名为origin/Development
。
现在,所有内容都应恢复原位。如果您运行git status
,则应该看到修改后的文件等。
这只是一个建议。您可以复制文件夹并尝试一下:)
编辑:我错过了一个重要步骤。添加原点后,您需要提取。
希望它对您有用:)
答案 2 :(得分:0)
我通过以下操作进行了修复: