我偶尔在昂贵的互联网连接,我想知道(至少大约)多少数据将被推送到远程在git push
。预测多少数据将被推入一个git推
回答
其实我觉得我喜欢我的评论足以发布它作为答案!
当你推,git创建一个所有必要的对象包并上传到远程。这意味着我们正在寻找预测包装大小的方法。由于包被压缩,这使得很难根据差异或对象大小做任何事情;我们真正想要做的只是看看这个包装会有多大。如果你能在打包后立即中断推送,并根据包的大小决定继续推进,那就太好了,但我认为这是不可能的。我最好的猜测是尝试重新创建将推动并检查的包。
捆绑文件基本上是一个包含头文件信息的包(如果你愿意,可以看看the source)。这意味着这是一个方便的瓷器命令,将创建一个您关心的大小的文件。 (远远高于容易尝试手动使用pack-objects)。使用这样的事情:
git bundle create foo.bundle ^origin/master master
这会给你含去掌握所需的一切一捆,鉴于遥控器具有产地/主 - 完全一样应该推动的东西git push origin master
。如果你有更多的分支你会推动,你也可以加以解决;它只是采取rev-list参数:
git bundle create foo.bundle ^origin/master master ^origin/topic topic ...
只需检查创建的包的大小;它应该几乎等于你最终推动的东西。这确实意味着你最终必须两次创建包(一次使用捆绑包并且一次使用一次),但除非这是一个需要很长时间收拾的非常大的推动,否则它不应该是一个大问题。
git diff HEAD origin/master --stat
这不显示带宽,我得到:git push --dry-run -v 推送到[email protected]:项目 到[email protected]:项目 fbe6184..7b7a3bc master - > master – 2010-11-15 00:56:01
@ Gerald,请尝试使用git diff命令。我上面发布的例子会告诉你哪些文件已经改变,每个文件中有多少行插入和删除。这些信息足够了吗? – 2010-11-15 01:05:03
当涉及压缩和二进制差异时,这是一个相当粗略的估计。如果有很多修改也很乏味。 – 2010-11-15 01:51:40
您可以通过运行猛砸一下Git会在内部运行一个类似位找出几乎什么时候它会创建包文件,以推动:
$ echo $(git merge-base HEAD origin/master)..HEAD | git pack-objects --revs --thin --stdout -q | wc -c
这应输出包的字节数文件Git会发送。细分:
# Find the common ancestor of HEAD and origin/master, and output a
# revision range (<a>..<b>) string to git pack-objects.
echo $(git merge-base HEAD origin/master)..HEAD
# Generate the pack file containing the revision range specified above, writing
# it to stdout.
git pack-objects --revs --thin --stdout -q
# Print the byte count of the file contents passed via stdin.
wc -c
这是有条件的做一个git fetch
就在你推动;如果你不这样做,Git将无法找到共同的祖先,并会发送整个存储库的内容。有关更多信息,请参阅this answer。
- 1. 预测IO +通用推荐器中推荐数量的减少
- 2. 预推git挂钩?
- 3. 将多个数组对象推入localhost?
- 4. 将数组推入另一个数组
- 5. 您可以将多少个字符挤入Apple推送通知?
- 6. 将多维数组推入数组中?
- 7. 数据表被推下
- 8. Angular:将数据推入嵌套数组
- 9. 如何确保一切都被推入git?
- 10. 用Matlab外推一组测量数据
- 11. jquery全局访问数据,将其推入一个对象
- 12. ViewController被推送时检测
- 13. git提交并推入IntelliJ
- 14. Git推入生产(FTP)
- 15. 不能推入git仓库
- 16. 将数组推入数组
- 17. 将数据推入Laravel推送器中不工作的对象
- 18. 一旦我推入git repo,如何将我的代码推送到我的VPS?
- 19. 推多个文件夹到Git
- 20. PHP推入数组多维
- 21. 将数据推入正则表达式?
- 22. 将数据推入dojo对象存储
- 23. 将数据推送到输入()未检测到:角4
- 24. 如何将uinavigationcontroller推入另一个uinavigationcontroller
- 25. 将阵列推入另一个阵列
- 26. Git将分支推向heroku
- 27. Git:推送了一个不应该被跟踪的文件
- 28. 将整数推入堆栈
- 29. 将对象推入数组
- 30. 将对象推入数组
这似乎很棘手......压缩是压缩的,所以要真正知道,在创建包之后但在它发送之前,您想要中断它。你可以尝试检查相应包的大小,虽然这意味着有效地打包两次。 – Cascabel 2010-11-15 05:00:50