git clone --recursive慢_Git使用之submodule

本文记录了一位开发者在使用Git克隆项目时遇到子模块无法克隆的问题。问题表现为子模块文件夹在本地为空,而远程仓库中有内容。经过排查发现,子模块是一个独立的子项目,需要通过`git submodule update --init --recursive`命令或者在克隆时使用`--recursive`选项来获取子项目内容。此外,还提供了在Visual Studio中递归拉取项目的解决方案。
摘要由CSDN通过智能技术生成

4f0cbccdff6da1034c422b8692d561a5.png

入职第一周,就因为clone项目而产生了很大的障碍,花了差不多三四个小时才定位问题并解决,记录一下。


一、问题

当我们在使用Git克隆项目的时候,无法克隆下来一个文件夹。记该文件夹为A,A在远程仓库是有的,也能点开看到,而克隆下来后,本地A点开后是空的,什么也没有。

A的特征为,其后面跟着一个 @xxxxxxx,xxxxxxx为一串数字。

432d9a14d26ea6e33091c234b0009e3f.png
远程仓库中A的示意图

二、问题演示

1、在Git Bash中克隆远程仓库,指令如下:

git clone https://github.com/Aq-audio/work-record

拷贝本地文件如下所示

c53fadc97477e52d569e15de38734a5e.png

而远程仓库如下所示

94678348a3bd6b998ecd4dc00b608b04.png

2、继续点开submodule文件夹。

本地如下所示

9fdbb474a47f30b0868738fec891b83c.png

而远程仓库点开后如下所示

3d60a7b332f57f1e73b001497ecea41e.png

3、问题出现了:本地上啥也没有,而远程仓库中却有文件——README.md。

三、定位问题

核心在于,submodule文件夹是一个子项目,在远程仓库中,其后面的 @xxxxxxx是子项目的标识。

submodule的具体使用大家可以看Git Book的描述,在此不加以赘述。

Git - 子模块​git-scm.com

四、解决问题

在本地中,Git Bash进入最开始拷贝得到的文件夹,本例中,该文件夹是 work-record,如下所示

882ef5d3b3b5f4f83230a6eb9a72eb82.png

输入指令

git submodule update --init --recursive

此时,再进入本地的submodule文件夹,可以看到,已经将远程仓库中该文件夹下的文件拷下来了。

其它方法:

1、在最开始的时候,看到有这种子项目的项目,直接用以下指令拷贝。

git clone --recursive https://github.com/Aq-audio/work-record

便可以一步到位将所有的子项目拷到本地来。

2、使用visual studio拉取项目,选择递归式拉取。

同样的,如果一个大项目中,有子项目,子项目下面又有子项目,也是一样的操作方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值