前言
项目发展到一定的程度,基本都会使用一些公共组件和模块做精细化的拆分,尤其是多个项目使用同一组件或sdk,方便统一升级和管理,使用Git做版本控制管理,也就不可避免的使用到子模块作为管理,下面主要介绍一些子模块常用的管理命令
配置文件
.gitmodules
:该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射。
# 示例:
[submodule "vendor/sdk"]
path = vendor/sdk
url = ssh://git@git.ngxcode.com/intra/sdk.git
[submodule "vendor/tools"]
path = vendor/tools
url = ssh://git@git.ngxcode.com/intra/tools.git
常用命令
# 查看帮助
git submodule --help
# 初始化本地.gitmodules文件
git submodule init
# 克隆代码时带上子模块;repository:父仓库地址;
git clone --recurse-submodules <repository>
# 拉取所有子模块
git submodule foreach git pull
# 添加子模块
# repository:仓库地址;path:存放当前项目文件夹路径
git submodule add <repository> <path>
# 更新子模块
git submodule update --init --recursive
# 删除子模块;这个手续稍微有点多
rm -rf 子模块目录 # 删除子模块目录及源码
vi .gitmodules # 删除项目目录下.gitmodules文件中子模块相关条目
vi .git/config # 删除配置项中子模块相关条目
rm .git/modules/* # 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可