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

sim*_*ack 32 git git-clone

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

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

Von*_*onC 53

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

git clone --depth 1 <repository>
Run Code Online (Sandbox Code Playgroud)

确保有一个git 1.9+,正如我在" Is git clone --depth 1(浅层克隆)比它更有用吗? "中所解释的那样.

注意:Git 2.5(2015年第二季度)甚至支持单个提取提交!请参阅" 从远程git存储库中提取特定提交 ".

  • @ tulio84z或`git fetch --unshallow`:见http://stackoverflow.com/a/6802238/6309. (10认同)
  • 我以后还可以获得历史记录吗?怎么样?只是"git pull"? (5认同)

Cir*_*四事件 6

git clone --jobs

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

-j <n>, --jobs <n>

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

在 v2.9.0(2016 年 3 月)提交 72290d6 上添加

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

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

如果您有来自不同服务器的子模块,绝对应该这样做。

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