git --- 子模块 submodule
git clone —recursive 介绍
git clone命令是Git版本控制系统中的一个常用命令,用于将远程仓库克隆到本地。而git clone --recursive则是在克隆时将子模块也一并克隆下来。子模块是指嵌套在主项目中的其他Git仓库,这样可以方便地管理多个相关的项目。
为什么要使用git clone —recursive
在某些情况下,主项目依赖于其他的子模块,这些子模块可能是外部的库或者其他的项目。如果只使用普通的git clone命令,只会将主项目克隆下来,而不会将子模块也一并克隆下来。这样就无法完整地获取到项目的所有代码和依赖。使用git clone --recursive命令可以解决这个问题,确保项目的完整性。
要使用git clone --recursive命令,只需要在克隆命令后面加上--recursive选项即可。例如:
git clone --recursive https://github.com/user/repo.git
这样就会将主项目和所有的子模块都克隆到本地。
git clone —recursive的原理
git clone --recursive命令的原理是通过.gitmodules文件来确定项目中的子模块信息。.gitmodules文件是一个纯文本文件,记录了子模块的路径、URL和提交版本等信息。当使用git clone --recursive命令时,Git会先克隆主项目,然后根据.gitmodules文件中的信息,逐个克隆子模块。
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和分支信息。
-b 指定分支版本。
git submodule add -b release/v8.0 https://github.com/lvgl/lv_demos.git components/lv_demos
git submodule update --init --recursive
更新仓库和子模块