【发布时间】:2011-01-06 18:15:39
【问题描述】:
我的 git 存储库不知何故出现了问题 - 我今天早上加载了 msysgit,而不是在当前目录之后显示分支名称,它显示“((ref: re...))”,“git status”报告一切都作为一个新文件,'git log' 和 'git reflog' 告诉我“致命:错误的默认修订版 'HEAD'”,等等。
执行 'git reflog --all' 或 'gitk --all' 显示存储库的其余部分完好无损,但看起来我正在处理的分支刚刚消失,这解释了为什么 HEAD 似乎没有存在/指向任何东西。
我知道 git 保存着各种各样的信息,而且我假设我的提交只是以某种方式被孤立了,那么是否有一些命令可以显示这些提交,以便我可以将 HEAD 重置为它们?
编辑:哦,亲爱的。我发现了 'git fsck',而 'git fsck --full' 报告“致命:对象 03ca4 ... 已损坏”。我该怎么办?
编辑:天哪,天哪。我检查了另一个分支,然后尝试使用 'git checkout -b lostbranchname' 重新创建具有相同名称的原始分支,并且 git 说“错误:无法解析参考 refs/heads/lostbranchname:没有错误,致命:失败锁定参考以进行更新:没有错误”。 “没有错误”一定是一个特别讨厌的错误。所以看起来它还在徘徊,但无法使用,无法杀死。
编辑:超级骗子哦,亲爱的。我已经按照这里的建议进行了一堆解包、重新打包和替换:How to recover Git objects damaged by hard disk failure?,但现在我收到另一个散列报告为损坏,因为像“git status”这样无害的东西。我认为整个事情都被水洗了。 Git 很可爱,但我不应该处理这种事情。
【问题讨论】:
-
关于
git checkout -b lostbranchname- 如果您只关心分支的名称(而不是它的内容),您可以手动删除(或重命名).git/refs/heads/lostbranchname- 这有望解决问题。 -
而您还没有将这个 git 文件夹推送到的上游?
-
遗憾的是,它实际上是一种劣质源代码控制系统的替代存储库,我只是在本地使用它来获取 git 的所有功能和细节,而无需其他系统的麻烦。但至少其他系统不会随机破坏自身。尽管如此,这意味着我失去的只是我上次签入另一个系统以来的更改,我已经恢复了。是时候开始一个新的存储库了!
-
我会毫不犹豫地说 git 让你“处理这种事情”或者它自己损坏了。除了备份之外,没有任何东西可以完全稳定地防止数据丢失。
-
我真的知道,我只是(自然地)有点生气,因为我失去了我美好的历史。这不是 git 的错,任何其他系统都会出现相同的文件系统错误。
标签: git