Git返回';无法运行重新打包';和';充气返回';错误

Git返回';无法运行重新打包';和';充气返回';错误,git,gitlab,git-pull,gitkraken,Git,Gitlab,Git Pull,Gitkraken,我面临存储在GitLab上的Git存储库的问题。这似乎是一个只影响这个特定存储库的存储库问题,因为GitLab上托管的所有其他项目都运行良好 似乎我个人可以使用GitKraken推、拉和签出分支,但当我尝试从Git Bash中拉时,我得到了以下结果: $ git pull Auto packing the repository in background for optimum performance. See "git help gc" for manual housekeeping. err

我面临存储在GitLab上的Git存储库的问题。这似乎是一个只影响这个特定存储库的存储库问题,因为GitLab上托管的所有其他项目都运行良好

似乎我个人可以使用GitKraken推、拉和签出分支,但当我尝试从Git Bash中拉时,我得到了以下结果:

$ git pull
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
error: Could not read bb5a805503a3da247038200df7002f452a8781e9
fatal: bad tree object bb5a805503a3da247038200df7002f452a8781e9
error: failed to run repack
在同一个项目上与我合作的所有人在尝试拉动时都有类似的问题:

$ git pull
remote: Enumerating objects: 112, done.
remote: Counting objects: 100% (112/112), done.
remote: Compressing objects: 100% (102/102), done.
fatal: pack has bad object at offset 8105548: inflate returned -5
fatal: index-pack failed
这就是我们在尝试在新位置克隆存储库时得到的结果:

remote: Enumerating objects: 4364, done.
remote: Counting objects: 100% (4364/4364), done.
remote: Compressing objects: 100% (1622/1622), done.
fatal: pack has bad object at offset 56589977: inflate returned -5
fatal: index-pack failed
以下是我们尝试过的事情:

  • 测试了多台计算机
  • 测试了多个用户
阅读类似的问题,例如,我怀疑我们的存储库已经损坏。然而,我不明白为什么我似乎能够通过GitKraken使用它。通过它的GUI,我成功地合并了两个分支,并将最新的提交推送到服务器

有人能解释出问题的原因吗

编辑:尝试修复存储库

下面是我发布的链接中包含的内容,也有下面的答案,我运行命令
git fsck--full
来检查存储库链接的状态。我的发现并不令人放心,因为似乎有很多链接都断了

Checking object directories: 100% (256/256), done.
Checking objects: 100% (3769/3769), done.
broken link from  commit f42ccacb8101ef49493aca18089378697490bb66
              to    tree e461e3cbe3221cd5ba7035222aa716dcabb63713
broken link from  commit 2fe8ac2b06d8e8f37b354c395f60a77f0ab1f9a9
              to    tree 93b9618cc159c1b18aba319e8f7e3e5e8f7b57df
broken link from  commit 16d23305969b3a40316618b952b2e5ff1ffedbf6
              to    tree 80c4012d9f3b3f51f17932dec80e740bc4e5a1d6
broken link from    tree 867941d734b41a5ce800dff6ea7dbfca30787e15
              to    tree bb5a805503a3da247038200df7002f452a8781e9
broken link from    tree e16211709ea4ce02a89bbe87d30a410dac65e372
              to    blob b6eb83a9e4f16fe49a0eb9bfea0bf6dfce9adcbc
broken link from    tree e16211709ea4ce02a89bbe87d30a410dac65e372
              to    blob a593c8f43faacf41bc93c98dbb347e673cd47f3f
broken link from    tree e16211709ea4ce02a89bbe87d30a410dac65e372
              to    blob 652245900beb49246e58f5c216dbcf161f727e2d
broken link from    tree e16211709ea4ce02a89bbe87d30a410dac65e372
              to    blob a7998441f7435126feb6b35e9b4b575bd193d6d2
然后是一长串
悬挂提交
悬挂blob
行,其中有8个
缺失的实例
行:

[...]
missing tree 80c4012d9f3b3f51f17932dec80e740bc4e5a1d6
[...]
missing blob a593c8f43faacf41bc93c98dbb347e673cd47f3f
[...]
[6 more]
手动恢复损坏的文件似乎需要相当长的时间

编辑#2:本地固定存储库

我在存储库的本地副本中安装并运行了
git repair
,并实际修复了它。如果现在运行
git fsck--full
我只看到响应中的“健康”消息。没有更多断开的链接

但是,无论我将git-push--force推到
origin
,似乎
origin
仍处于损坏状态。一个奇怪的更新是,现在我可以成功地使用
git clone
,而我所有的同事仍然不能。怎么可能呢

最重要的是,有没有办法在
origin
上运行
git repair

编辑#3:创建新原点

在本地修复了我的存储库之后(并检查了
git fsck
没有丢失链接),我将所有相关的分支推到了GitLab上的一个新来源。我原以为会是这样,但不幸的是问题依然存在

我开始注意到的一种模式是,我们似乎都能够
从Ubuntu(使用Git Bash或GitKraken)克隆
,但不能在Windows 10上(既不使用Git Bash也不使用GitKraken)

在浏览网站时,我发现Git怎么可能在Linux上工作,而不是在Windows上工作。在那里,他们解释说这是一个与Git相关的问题(但这已经是一年多以前的事了)。类似的事情发生有意义吗?我不得不说我对此持怀疑态度,因为我们测试的其他存储库在Windows上运行良好

编辑#4:使用较早版本的Git for Windows进行测试

目前的版本是2.19。我在2.18和2.9(后一个日期为2016年)上试过,但我得到了相同的错误

编辑#5:尝试在本地成功克隆


在我写了一篇关于
gitforwindows
的建议后,我尝试从U盘上的存储库副本中使用
git clone
。成功了。问题似乎局限于Git+Windows+GitLab或Git+Windows+SSH。

正如链接的答案所指出的,树中的大多数对象都是不同的并经过压缩以节省带宽和磁盘,从而创建了所提到的
.pack
文件

在pull过程中,git客户端与远程端交换ref和head的列表,因此远程端可以遍历它们,并根据客户端已有的内容计算需要发送的对象。然后创建包并将其发送到客户端。这意味着对于同一对象,发送到客户机的包可能不同于另一个包

至于原因,我说不出来,但你的回购协议跳过了冲突对象是有道理的,尽管由于不同的客户端在同一工作副本中抛出了这个错误,这似乎不太可能,看起来可能只是软件问题,可能是每个客户端使用的zlib不同

您可以尝试
强制推送
您的回购(不推荐)或推送至其他远程设备作为最后手段

另外,从你链接的答案中,有一个程序可以尝试和

更新:作为后续行动,
-5
是zlib上的
Z_BUF__错误
,根据:

如果取得了一些进展,则inflate()返回Z_OK[…] 如果无法取得进展或进展不足,则出现Z_BUF_错误 使用Z_FINISH时,输出缓冲区中的空间。请注意Z_BUF_错误 不是致命的,可以使用更多的输入和 更多的输出空间以继续解压缩。如果Z_数据_错误为 返回[……]

我个人认为缺陷在软件中,而不是在GitLab中,但这只是我的猜测


还有一个建议:如果不可能将所有开发人员迁移到Linux。。。W10的Linux子系统怎么样?

谢谢您的输入。我试图
强制推送
,但我得到的是
一切都是最新的
。根据你在链接中提到的指南,我正忙着。我将更新我的问题以显示我得到了什么。@raggot我绝对建议为恢复操作进行新的克隆/复制。除了通常的
fsck
gc
等功能外,您还可以尝试上一篇指南中未提及的全部功能。谢谢。实际上,我不知道如何重新打包。我刚刚尝试过,但收到了以下错误消息:
错误:无法读取BB5A805503A3DA47038200DF7002F452A8781E9致命:错误树ob