Git致命错误: 无法读取对象xxx: 参数无效。

33

如果我从远程拉取或获取(fetch)代码时,遇到以下错误:

$ 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

1
请查看这个这个 - pRaNaY
当我打开文件8b/0fd4094630fea108b60faa15535ffbc85d87cb时,它的内容是0000 0000NULL NULL NULL... - Vikas
2个回答

53

最终我成功解决了这个问题。 我认为问题发生在电脑由于断电而关闭时。

我无法提交任何本地分支中的更改。这意味着我的包文件未受损,但某些引用无效。

首先备份你的.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. 参考自这里


1
删除这些对象后,被删除的对象仍存在未决的差异。 - Dinesh Chitta
1
@Vicas:您能否详细说明一下您所说的“...删除了所有三个引用...”是什么意思?您是指简单地删除这些文件吗?还是删除它们的内容? - MeirG
@Vikas:抱歉,我拼错了……请看上面。谢谢! - MeirG
需要删除.git/refs/remotes/origin中的引用吗?在完成前两个步骤后,我成功地运行了“git status”。 - Axel
在我只剩下“悬挂blob”日志后,我运行了“git prune”,然后所有这些日志都消失了。 - Anatoliy Litinskiy

2

在运行Malwarebytes时,我遇到了这个错误。重新启动电脑没有帮助。停止Malwarebytes进程可以解决问题。因此,请尝试禁用/停止您的病毒扫描程序,因为它也可能导致此问题。


确实。真是个发现。Malwarebytes如何破坏了主分支(本地和远程)的HEAD仍然是个谜。我甚至没有提交、获取或推送(尽管PHPStorm正在运行)。但它导致我的Win10蓝屏,这是非常罕见的情况。是时候将Malwarebytes从我的系统中删除了。 - Dimitri Mostrey
@DimitriMostrey:是的,它还会屏蔽一些随机的网站,比如我的网站,这并不太好,而且还会不断地提示购买高级版,哈哈。我想这样也好,算是告别了吧。 - BullyWiiPlaza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接