版权声明: https://blog.csdn.net/dadan1314/article/details/89498909
子模块命令
git submodule add -- <repository> <path> #添加子模块
git submodule add -b <分支名> -- <repository> <path> #添加指定分支子模块
git submodule init #初始化子模块
git submodule update #更新子模块
git submodule deinit -f <path> #移除子模块,从.git/config中移除
git submodule update --init -- <path> #单独更新子模块
.gitmodules
[submodule "package/googletest"]
path = package/googletest
url = ***.git
branch = develop
[submodule "package/qt"]
path = package/qt
url = ***.git
.git/modules
每个子模块在该文件夹都有对应的目录git配置
.git/config
每个子模块在该文件中都有字段配置
删除子模块
基本原理
- 删除模块目录
- 删除.gitmodules中配置字段
- 删除.git/modules对应文件夹
- 删除.git/config中配置字段
- 删除索引区记录
实际操作
- git submodule deinit -f <path> 此步骤完成了基本原理中4,并且完成了1步骤克隆下来的文件,但会残留文件
- git reset --hard HEAD 或者 git rm --cached <路径> git rm --cached .gitmodules,完成步骤5
- 删除.git/modules对应文件夹和删除.gitmodules中配置字段