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

更新仓库和子模块

 

posted @ 2024-04-04 15:47  流水灯  阅读(120)  评论(0编辑  收藏  举报