![4f0cbccdff6da1034c422b8692d561a5.png](https://i-blog.csdnimg.cn/blog_migrate/acaf265a28b28d03498a2f6ca4040cbc.jpeg)
入职第一周,就因为clone项目而产生了很大的障碍,花了差不多三四个小时才定位问题并解决,记录一下。
一、问题
当我们在使用Git克隆项目的时候,无法克隆下来一个文件夹。记该文件夹为A,A在远程仓库是有的,也能点开看到,而克隆下来后,本地A点开后是空的,什么也没有。
A的特征为,其后面跟着一个 @xxxxxxx,xxxxxxx为一串数字。
![432d9a14d26ea6e33091c234b0009e3f.png](https://i-blog.csdnimg.cn/blog_migrate/a3f2cf844420d92ebea2565f7ef524af.jpeg)
二、问题演示
1、在Git Bash中克隆远程仓库,指令如下:
git clone https://github.com/Aq-audio/work-record
拷贝本地文件如下所示
![c53fadc97477e52d569e15de38734a5e.png](https://i-blog.csdnimg.cn/blog_migrate/020b6a7884b1b0c99a96b614fc481aa6.png)
而远程仓库如下所示
![94678348a3bd6b998ecd4dc00b608b04.png](https://i-blog.csdnimg.cn/blog_migrate/5610fba0e85d778ff3b0d4fcba157604.png)
2、继续点开submodule文件夹。
本地如下所示
![9fdbb474a47f30b0868738fec891b83c.png](https://i-blog.csdnimg.cn/blog_migrate/211064ead5361f4cbc1c283f6eb427b2.png)
而远程仓库点开后如下所示
![3d60a7b332f57f1e73b001497ecea41e.png](https://i-blog.csdnimg.cn/blog_migrate/3225bdd29aca2cecfeac1f0716963b58.png)
3、问题出现了:本地上啥也没有,而远程仓库中却有文件——README.md。
三、定位问题
核心在于,submodule文件夹是一个子项目,在远程仓库中,其后面的 @xxxxxxx是子项目的标识。
submodule的具体使用大家可以看Git Book的描述,在此不加以赘述。
Git - 子模块git-scm.com四、解决问题
在本地中,Git Bash进入最开始拷贝得到的文件夹,本例中,该文件夹是 work-record,如下所示
![882ef5d3b3b5f4f83230a6eb9a72eb82.png](https://i-blog.csdnimg.cn/blog_migrate/8a0f54c73edf18b6475bedfc023266af.png)
输入指令
git submodule update --init --recursive
此时,再进入本地的submodule文件夹,可以看到,已经将远程仓库中该文件夹下的文件拷下来了。
其它方法:
1、在最开始的时候,看到有这种子项目的项目,直接用以下指令拷贝。
git clone --recursive https://github.com/Aq-audio/work-record
便可以一步到位将所有的子项目拷到本地来。
2、使用visual studio拉取项目,选择递归式拉取。
同样的,如果一个大项目中,有子项目,子项目下面又有子项目,也是一样的操作方法。