0


从GitHub完整克隆项目及其依赖项子模块(submodule,recursive)

环境

WIN10

GIT 2.31.1

示例项目:FreeRTOS · GitHub

日期:2023-1-5

常规操作

从GitHub上克隆项目的常规操作

# 常规
git clone [email protected]:FreeRTOS/FreeRTOS.git

# 递归克隆
git clone --recursive [email protected]:FreeRTOS/FreeRTOS.git

# 国内镜像源克隆 https://www.kgithub.com
git clone --recursive [email protected]:FreeRTOS/FreeRTOS.git

当某些项目仓具有很多子模块时,通常使用git clone --recursive克隆项目(git clone前建议关闭防火墙),因为GitHub在大多时候被墙的状态,这种方式下载会很慢甚至超时失败,所以使用国内镜像源是一个不错的方式。

当前有效镜像源[https://www.kgithub.com]替换github.com,可以很快速完整的将项目快速克隆下来。

子模块下载

会发现使用**--recursive下载非常缓慢且大概率无法完整下载,此时我们可以更改.gitmodules**文件内url项(.git目录下的config文件内也有相关内容,submodule sync同步后的目的地),替换成国内镜像源来稳定快速下载,如下:

# 源
[submodule "FreeRTOS/Source"] # 子模块
    path = FreeRTOS/Source # 子模块克隆路径
    url = https://github.com:FreeRTOS/FreeRTOS-Kernel.git # 子模块克隆目标源
[submodule "FreeRTOS/Test/CMock/CMock"]
    path = FreeRTOS/Test/CMock/CMock
    url = https://github.com:ThrowTheSwitch/CMock.git
# 替换后
[submodule "FreeRTOS/Source"]
    path = FreeRTOS/Source
    # url = [email protected]:FreeRTOS/FreeRTOS-Kernel.git # 替换成镜像源命令行形式路径
    url = https://kgithub.com:FreeRTOS/FreeRTOS-Kernel.git # 替换成镜像源目标路径
[submodule "FreeRTOS/Test/CMock/CMock"]
    path = FreeRTOS/Test/CMock/CMock
    url = [email protected]:ThrowTheSwitch/CMock.git

替换成镜像源路径,通常环境没问题的话替换成https://形式的镜像源路径(使用kgithub.com替换github.com即可),如果遇到failed的话,可以使用命令行形式尝试,实测是oooooook的。

使用kgithub.com镜像源,建议配置好git’s config文件,在用户目录.ssh文件夹下,如果还没有该文件自建一个即可,如下

Host kgithub.com
Hostname ssh.github.com
Port 443
User git

更改**.gitmodules文件后,在.gitmodules文件同级目录使用submodule**命令同步并更新文件

# 同步.submodulesa文件
git submodule sync
# 更新或下载子模块
git submodule update --init --recursive

同理,如果在子模块中还有依赖项既子模块的子模块,同样重复递归上述操作即可。

参考

git clone —recursive 快速高效下载方法 - 知乎

【github】 加速国内 Github 访问,下载,的9种方案! - 老杨的博客。 - 博客园Git报错 into submodule path failed,修改子模块地址解决_常城的博客-CSDN博客_git 修改子模块地址

GitHub: Let’s build from here · GitHub

http://t.csdn.cn/KVB5Xgithub 配置了公钥依旧提示git@github.com‘s password: Permission denied, please try again. 的解决办法_XeonYu的博客-CSDN博客

用户对问题“致命:无法访问 getaddrinfo()线程启动失败”的回答 - 问答 - 腾讯云开发者社区-腾讯云

标签: github git

本文转载自: https://blog.csdn.net/loveliyuyuan/article/details/128571576
版权归原作者 叔子衿 所有, 如有侵权,请联系我们删除。

“从GitHub完整克隆项目及其依赖项子模块(submodule,recursive)”的评论:

还没有评论