Git 子模块的添加与管理
1 添加子模块
进入需要存放子项目的目录,然后执行:
git submodule add https://github.com/bsm/sarama-cluster
git submodule add <仓库地址> [本地目录] 会把子仓库作为独立仓库 clone 到当前目录中,并把子仓库的 commit 记录到父仓库的索引(.gitmodules)中。
注意:
- 假定希望子项目被安装到目录
github.com,那么需要先在当前目录下创建<组织名>目录(如bsm),再进入该目录执行git submodule add https://github.com/bsm/sarama-cluster,否则会以当前目录名作为本地路径。 - 如果添加失败,提示
'vendor/github.com/bsm/sarama-cluster' already exists in the index,需要先从索引中移除旧记录:
git rm --cached sarama-cluster # 从索引中移除但保留工作区文件
git submodule add https://github.com/bsm/sarama-cluster
2 提交子模块变更到父仓库
git commit -am 'added sarama-cluster module'
git push
3 克隆包含子模块的仓库
克隆时需要带上 --recursive 参数,才会自动检出子模块:
git clone --recursive ssh://git@gitlab.example.com:8022/elsa/anti-bot.git
# 如果已经 clone 过了,可以手动初始化并更新子模块
git submodule update --init --recursive
4 子模块的常用维护命令
# 更新所有子模块到各自仓库的最新提交
git submodule update --remote
# 查看子模块状态(记录在父仓库中的 commit)
git submodule status
# 删除子模块(三步)
git submodule deinit -f <path>
git rm -f <path>
# 清理 .gitmodules 中和 .git/config 中的残留记录
阅读 —
·
全站 —