执行git克隆时,git经历了各个阶段
Receiving objects
Resolving deltas
Checking out files
我希望所有网络活动都在Receiving objects
期间进行,然后Resolving deltas
完全是本地活动(如此处What is git actually doing when it says it is "resolving deltas"?所述),但实际上仍然有连接处于打开状态。 / p>
我可以通过两种方式告诉我们:
Resolving deltas
期间未显示任何活动,然后在那里
关闭连接后交换了一些数据包。Resolving deltas
步骤。所以我感兴趣的是为什么git需要在Resolving deltas
期间保持此连接打开?出于某种原因(例如钩子)之后是否需要?
(注意:这可能取决于您使用的是https还是ssh)
答案 0 :(得分:1)
鉴于在这个阶段 this 方向没有任何事情要做,因此尚不清楚为什么Git在解决方案完成之前一直保持传输协议开放。在另一个方向上(如果您要推动),您的Git必须在接收方解决交付的瘦包的过程中保持连接打开,因为尚未发生服务器端参考更新,而您自己的Git需要知道它们是否是成功的。因此,要进行推送,您的Git必须保持连接打开,等待解析完成,然后等待查看其Git在参考更新阶段报告的内容。
但是,对于克隆,他们的Git并不关心您的Git是否能够更新您的引用。应该有可能尽早关闭运输工具。可能有一些不幸的代码构造现在使得这太困难了,导致Git保持连接断开。