PC崩溃后如何恢复本地存储库?

时间:2014-05-09 11:31:13

标签: git

我在结帐后刷新gitk历史记录工具时遇到了Windows蓝屏。一旦我的电脑重新启动,我的本地仓库就完全搞砸了。任何git命令都会导致以下错误消息:

error: unable to unpack c6424c31a54e292669cfdcba3136e7962c690437 header
error: inflateEnd: stream consistency error (no message)
fatal: loose object c6424c31a54e292669cfdcba3136e7962c690437 (stored in .git/objects/c6/424c31a54e292669cfdcba3136e7962c690437) is corrupt

引用的文件已满0。在关于恢复本地仓库的misc帖子之后,我运行了git fsck,这导致了相同的错误输出。备份.git目录后,我删除了损坏的文件并多次重新运行git fsck(一个接一个地删除损坏的文件),直到我得到以下输出:

Checking object directories: 100% (256/256), done.
Checking objects: 100% (38484/38484), done.
error: HEAD: invalid sha1 pointer c6424c31a54e292669cfdcba3136e7962c690437
error: refs/heads/CSS does not point to a valid object!
error: 8a91e61fae289397ca2668a3971199dc1596decf: invalid sha1 pointer in cache-tree
error: a21652baded5946d40820d716b14ab86008889e8: invalid sha1 pointer in cache-tree
broken link from    tree 770bb33eb5f833e57562a2f1d9a4c23da0865b16
              to    tree 8a91e61fae289397ca2668a3971199dc1596decf
broken link from    tree 770bb33eb5f833e57562a2f1d9a4c23da0865b16
              to    tree a21652baded5946d40820d716b14ab86008889e8
dangling commit <sha1> <many times>
dangling blob <sha1> <many times>
missing tree 8a91e61fae289397ca2668a3971199dc1596decf
missing tree a21652baded5946d40820d716b14ab86008889e8

缺少的树sha1都对应于我之前删除的损坏文件。

c6424c31也是我删除的损坏文件之一,refs / heads / CSS是当前分支。

git ls-tree的{​​p> 770bb33e返回项目的根目录。对于缺失的树,git ls-tree当然会返回not a tree object。我不知道损坏的文件或提交。

我无法结账到另一个分支或主人,因为git告诉我有本地更改(我无法提交或重置)。

我想我最终丢失了一些数据,但希望从本地存储库尽可能多地恢复:它包含一些尚未推送的已提交数据,并希望在内部结构中找到它。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我的建议是一种解决方法,但也许它适用于你:

  • 寻找当地的变化。我认为命令“git status”会这样做。
  • 从文件系统中复制/备份这些文件。
  • 从头开始重新创建本地存储库并从源中提取最新更改。
  • 覆盖文件系统上的备份文件。
  • 现在提交您的更改。