如何使用多个线程更快地使git克隆?

问题描述 投票:29回答:4

我对github的互联网速度从来都不快,并且它以50kb / s的速度挥之不去(我的互联网速度是20mbit,这不是很快,但仍然比这快得多)。根据我的估计,存储库是多gb,因此需要很长时间。

git是否支持使用multiple-threads下载对象,这样我可以最大化我的网速?

git git-clone
4个回答
50
投票

您可以使用浅克隆(意味着不克隆所有历史记录)至少尝试并缓解此问题:

git clone --depth 1 <repository>

确保有一个git 1.9+,正如我在“Is git clone --depth 1 (shallow clone) more useful than it makes out?”中所解释的那样。

注意:Git 2.5(2015年第二季度)甚至支持单次提取提交!请参阅“Pull a specific commit from a remote git repository”。


2
投票

试试git config --global http.postBuffer 524288000


1
投票

git clone --jobs

如果您有多个子模块,这可能会有所帮助:

-j <n>--jobs <n>

同时获取的子模块数。默认为submodule.fetchJobs选项。

commit 72290d6上的v2.9。0(2016年3月)添加:

clone:允许并行子模块克隆的显式参数

我想知道如果你在一台服务器上有两个模块,这是否会有所帮助。 GitHub上的TODO基准测试。

如果您有来自不同服务器的子模块,那肯定应该。

我想知道Git是否足够聪明,可以在给定时间尽可能多地从不同的服务器获取,而不是可能将所有作业一次性地放在一台服务器上。


0
投票

我在Windows下看到了类似的行为,其原因是Windows反病毒被设置为非常激进并且git正在传输大量小文件。双启动到Linux为git克隆提供了全速。

如果你有这些规范考虑创建一个测试Windows安装(例如虚拟使用VirtualBox或vmware播放器),你从头开始安装一个原始Windows,只添加必要的git软件。然后,您可以查看问题是“内部”还是“外部”git。我的个人猜测是这会很快。

© www.soinside.com 2019 - 2024. All rights reserved.