2014-05-09 72 views
2

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

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。关于恢复本地回购的其他文章,我跑了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 for 770bb33e返回我的项目的根目录。 git ls-tree为失踪的树木当然返回not a tree object。我不知道损坏的文件或提交。

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

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

任何帮助,将不胜感激。

回答

0

我的建议是一个解决办法,但也许对你有用:

  • 寻求当地的变化。我认为命令“git status”会执行此操作。
  • 从文件系统中复制/备份这些文件。
  • 重新创建您的本地存储库从头开始,并从原点拉最新的更改。
  • 覆盖文件系统上备份的文件。
  • 现在提交您的更改。
+0

'git status'抛出“fatal:bad object HEAD”。此外,我想要恢复的更改不在当前签出的分支上,而在另一个本地分支上,我无法签出。感谢您的帮助。 – Gaetan