2014-05-09 70 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