2016-06-10 60 views
13

如果我拉了獲取遠程混帳致命的:無法讀取對象XXX:無效的參數

$ git pull 
remote: Counting objects: 85, done. 
remote: Compressing objects: 100% (37/37), done. 
remote: Total 85 (delta 63), reused 69 (delta 48) 
Unpacking objects: 100% (85/85), done. 
error: inflate: data stream error (unknown compression method) 
fatal: failed to read object 8b0fd4094630fea108b60faa15535ffbc85d87cb: Invalid argument 
error: http://myremoterepo.com/project.git did not send all necessary objects 

我可以在本地提交我收到以下錯誤。當我檢查狀態:

> $ git status On branch vikas Your branch is based on 'origin/master', 
> but the upstream is gone. (use "git branch --unset-upstream" to 
> fixup) nothing to commit, working directory clean 
+0

請參見[this](http://stackoverflow.com/questions/25527812/git-corrupted-repo-how-to-pick-a-git-object-from-a-clean-repository)和[this](http://stackoverflow.com/questions/4254389/git-corrupt-loose-object) – pRaNaY

+0

當我打開一個文件'8b/0fd4094630fea108b60faa15535ffbc85d87cb'時,它的'0000 0000'或'NULL NULL NULL ...' – Vikas

回答

34

最後我能解決這個問題。 我認爲當我的電腦由於停電而關機時會發生問題。

我能夠在我的任何本地分支中提交任何更改。這意味着我的包文件沒有損壞,但一些裁判是無效的。

先備份您的.git。然後我用git fsck命令

$ git fsck --full 
error: inflate: data stream error (unknown compression method) 
error: unable to unpack 38fe6f16c7e8246d61150f0bc42629dbb532b5ce header 
error: inflate: data stream error (unknown compression method) 
fatal: loose object 38fe6f16c7e8246d61150f0bc42629dbb532b5ce (stored in .git/objects/38/fe6f16c7e8246d61150f0bc42629dbb532b5ce) is corrupt 

我刪除的文件.git/objects/38/fe6f16c7e8246d61150f0bc42629dbb532b5ce並繼續這些步驟,直到我獲得以下的輸出:

$ git fsck --full 
Checking object directories: 100% (256/256), done. 
Checking objects: 100% (168543/168543), done. 
error: refs/remotes/origin/staging: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: refs/remotes/origin/development: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: refs/remotes/origin/master: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: bad ref for refs/remotes/origin/staging 
broken link from commit 8b0fd4094630fea108b60faa15535ffbc85d87cb 
       to commit bac9f287963b1abb9e4b376b44b4a6500018e9fe 
Checking connectivity: 169821, done. 
dangling blob 750718546640b5b14c19cbdb9958d7bcc4b1114c 
dangling blob e313786318d4c76004728f15a25c6fa68c88b67e 
dangling blob ee3fd85992b48173f6c344a9f4a2f9667d4e1940 
dangling blob cd4898a3ec525e559292337c0bc6b68a77270b52 
dangling blob 9973506f35af1bf4e7790be57b02c70852843f92 
dangling blob 47ca4080b9a528efe23c9f7dce994815f5f9162a 
dangling blob 39d6807d215a7e74fb987d951a90e1d3e24a97eb 
dangling blob c0d650286c3702d56b827eded27eaa9515212847 
dangling commit 53db70d776ec7a59c10db106ef2585abea1ffddd 
... 

現在我刪除了所有三個裁判(.git/refs/remotes/origin/master.git/refs/remotes/origin/staging.git/refs/remotes/origin/development

瞧!現在我能夠拉和推!

P.S.瞭解here

+1

在刪除那些獲取未解析的deltas的對象後,刪除的對象 –

+1

@Vicas:請您詳細說明「...刪除了所有三個裁判......」是什麼意思?你的意思是簡單地刪除這些文件?刪除其內容? – MeirG

+0

@Vikas:對不起,我拼錯了......請看上面。謝謝! – MeirG

相關問題