问题
下载 Github 上某些代码仓库时,如果代码仓库中具有很多子模块,正常使用git clone —-recursive
下载方式,发现:下载缓慢并且子模块有极大概率不能完全下载。
在此通过一个例子,来展示如何快速高效的下载代码库文件。该方法具有普适性。
欲下载一代码库文件,原始下载方法为:git clone --recursive https://github.com/MarvinChung/Orbeez-SLAM.git
详细解决方法
-
执行:
git clone https://github.com/MarvinChung/Orbeez-SLAM.git。
先不对子模块进行下载,故不需要参数--recursive
;如果需要加速下载,需要对下载的链接进行一点小的修改,需要将上述的代码仓库链接github.com
部分替换成hub.fastgit.xyz
,该网址是 Github 镜像,若能命中,下载速度会非常快,若不能命中,则使用原始 github 链接或其他下载加速方式下载。注1:下载结束之后,得到文件夹 Orbeez-SLAM。对于该仓库的代码,其子模块的代码都放在文件夹 third_party 中,在文件夹 third_party 中是有若干个文件夹,但这些文件夹都是空文件夹,现在就需要将这些文件夹重新下载好。
注2:在文件夹 Orbeez-SLAM 中有一个文件 .gitmodules(Ctrl+h 显示.xx文件)。该文件是存储子模块名称(例如:[submodule "Thirdparty/g2o"] )、子模块在本地仓库位置(例如:path = Thirdparty/g2o)和子模块下载地址(例如:url = https://github.com/RainerKuemmerle/g2o)这三个信息的文件,如果有需要也可以修改子模块下载地址。 - 执行:
git submodule sync(修改过子模块下载地址时)
,更新子模块下载地址(需要在与.gitmodules
文件同级目录中)。 - 执行:
git submodule update --init --recursive
,更新子模块或下载子模块(位于与上述相同的文件夹中)。
至此,代码下载完成。
上述方法可以递归使用,直到代码库文件夹中所有子模块下载完成。
原文链接:https://zhuanlan.zhihu.com/p/361136073
标签:git,recursive,--,clone,文件夹,模块,下载
From: https://www.cnblogs.com/jangchuan/p/17979376