找到推动的大小

时间:2011-02-16 08:00:09

标签: git

我有一系列的提交,我想要推送到我的远程存储库,但我正在使用数据上限的互联网连接,我想知道提交是多大决定是否推送它现在或以后,当我使用更大的数据上限时。

当你处于中间位置时,你可以看到推动有多大,但有没有办法弄清楚实际推动之前有多大?

1 个答案:

答案 0 :(得分:11)

可能是。通过bash,假设origin/master是您的目标分支:

$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout --all-progress-implied > packfile

检查生成的packfile的大小可以让您了解需要发送多少数据才能使遥控器保持最新状态。

当我试图弄清楚我的上传包大小时,我从older answer采用了这种方法。这有点像黑客,因为你需要生成一个packfile - 理论上,一旦你知道本地和远程改变的提交范围,你可以问git的名字那些对象(递归问题,因为对象可能引用其他对象)并计算这些对象的大小。

(然后再次生成包文件那些对象 - 就像git push那样 - 所以尺寸更能代表发送的内容。)

如果你有其他开发人员在你希望推动的分支上工作,那么任何估计都没有实际意义,因为你可能必须在推送到远程之前运行git fetch,这意味着传输未知数量的数据!