git submodule add
可将其他仓库作为本仓库的子模块,并保持父项目和子项目相互独立。面对比较复杂的项目时,经常会用到。
语法
- 将URL的仓库作为本仓库的子模块。执行后,git会将URL的仓库clone到
当前路径
下。
git submodule add URL
- 后面可以
指定路径
。
git submodule add URL <path>
【注意】路径需要包含子模块的文件夹名称,如不包含会报错 <path> already exists and is not a valid git repo
【注意】如先前删除过目录,但没有及时commit提交到本地库,在引用同名称子模块时,会报错 <path> already exists in the index
。
submodule 执行后,git会将URL的仓库clone到指定路径下。并于工程根目录创建一.gitmodules
文件,包含子模块的路径、URL和分支信息。
正确的示例
git submodule add https://github.com/lvgl/lv_demos.git components/lv_demos
- -b 指定分支版本。
git submodule add -b release/v8.0 https://github.com/lvgl/lv_demos.git components/lv_demos
clone完整源码
git clone --recurse-submodules URL
【注意】如直接clone,不加 --recurse-submodules,clone后会丢失子模块的文件。
辨识
-
有子模块的项目,其根目录下会存在一
.gitmodules
文件。里面包含子模块的路径、URL和分支信息。 -
浏览Github,也能很好的辨识出,如下图框选部分则为子模块。