子模块 - 1684838553/webTips GitHub Wiki

在一个Git仓库中添加其它Git仓库的场景。

添加子模块

1.使用 git submodule add 进行添加子模块,执行命令后,添加一个.gitmodules文件。

cd MainProject/
git submodule add https://github.com/xxx/test.git

.gitmodules文件:保存项目 URL 与已经拉取的本地目录之间的映射,有多个子模块则含有多条记录,会随着版本控制一起被拉去和推送的。

直接执行git pull,默认不会将子模块的代码一起拉下来

2.初始化并更新子模块

git submodule update --init --recursive

3.更新子模块

git submodule update --recursive

4.拉取子模块远程代码

git submodule update --remote

删除子模块

在日常开发区中,也有删除子模块的需求。以test项目为例:

1.使用 git rm --cached testtest 从版本控制中删除(本地仍保留有),若不需要可不带 --cached 进行完全删除

2.打开.gitmodules文件,删除对应的内容

[submodule "test"]
	path = test
	url = https://github.com/xxx/liba.git

3.打开.git/config文件,删除对应的内容

[submodule "test"]
	active = true
	url = https://github.com/xxx/test.git

4.使用 rm -rf .git/modules/test , 删除.git下的缓存模块,最后提交项目

克隆含子模块的仓库

若需要克隆含有子模块的仓库,直接进行克隆是无法拉取之模块的代码,可加上 --recursive 参数,如下:

git clone --recursive https://github.com/xxx/MainProject.git

或者使用下面的三部操作:

git clone  https://github.com/xxx/MainProject.git
git submodule init
git submodule update