我正在尝试从github中的远程存储库向本地计算机执行git pull
...
但是git在70%的“解包对象”阶段被卡住了,没有任何迹象可以去任何地方..(现在离开几个小时没有变化)
有关如何解决此问题的任何建议吗?
是否有可能指示git只从远程存储库下载最新的提交/版本而没有所有中间状态?
答案 0 :(得分:41)
当我在github.com上git拉出一个存储库时,我遇到了同样的问题。我发现有一些大文件,与github的连接速度很慢。所以也许你只需要耐心等待git拉出整个存储库。
答案 1 :(得分:11)
对我来说,解决方案是将协议说明符从https更改为git,例如:
git clone https://github.com/some/repository
到
git clone git://github.com/some/repository
编辑:
Here's something about the protocols used in Git。
一些亮点:
Git协议的缺点是缺乏身份验证
它还需要防火墙访问端口9418,这不是企业防火墙始终允许的标准端口
答案 2 :(得分:4)
我发现大型二进制对象(如Adobe Illustrator文件等)也会使整个拉/推过程陷入困境。
这就是我喜欢现在使用两个存储库进行设计与代码的原因。
答案 3 :(得分:0)
[...],但是git陷入了“
Unpacking objects
”阶段的70%,没有任何进展的迹象
在Git 2.25(2020年第1季度)中,“ git unpack-objects
”仅根据接收和未打包的对象数显示进度,当必须处理一个异常大的对象时,进度会停滞。
它现在也显示了吞吐量。
请参见commit bae60ba的SZEDER Gábor (szeder
)(2019年11月19日)。
(由Junio C Hamano -- gitster
--在commit cf91c31中合并,2019年12月5日)
builtin/unpack-objects.c
:显示吞吐量进度签名人:SZEDERGábor
'git unpack-objects'显示了一条进度行,仅统计未打包对象的数量,因此,如果某些接收到的对象异常大,则在处理如此大的对象时,该进度可能似乎被冻结。
我只是盯着一个看似卡住的进度线超过半分钟,而“
git fetch
”正忙着收拾只有几个物体(即少于“fetch.unpackLimit
”的包裹),其中一个超过80MB。在“
git unpack-objects
”进度行中显示吞吐量,因此,即使在接收和处理大型对象时,我们仍显示出某些情况。对消耗的字节进行计数与对对象进行计数并显示进度的位置相距很远,要绕过“
struct progress
”实例,我们将不得不修改五个函数及其14个调用站点的签名:流失太多,所以让我们将其设为文件范围静态。'
git index-pack
',即'git unpack-objects
'的未拆表亲已经在其进度行中包含了吞吐量,并且它使用文件范围静态'struct progress
'实例作为好吧。
答案 4 :(得分:0)
您可能需要进行一些清理:
git fsck && git gc --prune=now