git submodule
是git系统中非常实用的一个功能,对于可复用模块非常有用。
一、使用命令
1.1 首次拉取带子仓库命令
git clone --recurse-submodules 父仓库地址
分开拉取
git clone // 克隆父仓库地址,无法下载到子模块信息
git clone --recursiv // 克隆父仓库地址,并下载到子模块信息
git submodule init // 初始化子模块
git submodule update // 更新子模块与主仓库中的子模块代码同步
// or
git submodule update --init
// or 嵌套的(子仓库中包含子仓库)
git submodule update --init --recursive
1.2 更新、拉取子仓库代码命令
父目录中:
git submodule update // 与主仓库中的子模块代码同步
git submodule update --remote // 与子仓库中代码同步(同步所有的子模块)
git submodule update --remote xxx // 指定需要同步的子模块
子模块目录下更新:
git pull
默认情况下会跟踪子模块的 master 分支,设置为其他分支:
git config -f .gitmodules submodule.[submodule-name].branch [branch-name]
二、git submodule 相关说明
2.1 git submodule init
修改当前项目的.git/config文件
2.2 git submodule update
拉取子模块远程仓库的内容并更新子模块的git信息 .git/modules
git submodule update --init --recursive
git submodule update --init --recursive
是一个用于初始化并更新 Git 子模块的命令,其中包含了三个参数:
update:
这个参数告诉 Git 更新子模块。 如果不指定此参数,Git 将不会更新子模块,而只是确保它们处于正确的提交状态。
--init:
这个参数告诉 Git 初始化尚未初始化的子模块。如果你的仓库包含子模块,并且有些子模块尚未被初始化(通常是因为它们是在一个最新的版本中添加的),那么使用这个参数将初始化这些子模块。
--recursive:
这个参数告诉 Git 递归地初始化和更新所有的子模块。如果子模块本身包含了其他子模块,那么使用这个参数将确保所有子模块都被正确初始化和更新。