由于内核恐慌,我的计算机关闭了我在 Windows 中的虚拟机上丢失了我的 git 存储库。当我继续 .net 时,我收到以下错误:
corrupted loose reference file: HEAD
我有一个名为 .git 的文件夹,其中包含我的分支列表。
您在.git
目录中显示的不是分支列表;它是 git repo 元数据的标准结构。这包括一些符号引用,例如HEAD
. 当引用作为文件存储在磁盘上时,它被称为“松散”引用,这就是我认为错误消息所说的内容。
所以错误似乎表明文件.git/HEAD
已损坏。这本身并不难修复(尽管大多数 git 命令将无法工作,因为它们目前无法识别这是一个 repo,因此需要一些麻烦);更大的问题是,在突然的系统崩溃之后,是否还有其他东西也损坏了。但作为一个起点,你可以尝试类似
# back up .git/HEAD somewhere, just in case
echo 'ref: refs/heads/master` >.git/HEAD
现在希望您的回购将再次得到认可。接下来做一些检查会很聪明,比如
git fsck
并且可能检查您是否对预期的分支进行了预期的更改。
最脆弱的事情是未提交的更改(尤其是未分阶段的更改)。但至少如果上述步骤进展顺利,您可以评估损失并决定从那里去哪里。
您可以将其设置为之前的阶段,而无需再次克隆存储库。您可能能够保留本地更改,但您将丢失所有未推送的提交或存储。
这就是我要做的:
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
,你应该看到你修改过的文件等。
这只是一个建议。您可以复制您的文件夹并试一试,看看:)
编辑:我错过了一个重要的步骤。添加原点后,您需要获取。
希望它对你有用:)
我通过执行以下操作进行了修复: