Submodule
允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
Git 子模块只是对特定时间快照中另一个存储库的引用。
添加子模块
git submodule {REPO_URL}
对已克隆项目:
git submodule init
git submodule update
Git submodule Init
git submodule init
默认行为是将来自 .gitmodules
文件的映射复制到本地 ./git/config
文件中。
git submodule init
可以后面接收模块名称列表参数。这样使用仅激活特定的子模块。
子模块工作流
一旦子模块在父存储库中正确初始化和更新,它们就可以像独立存储库一样使用。 这意味着子模块有自己的分支和历史。
对子模块进行更改时,必须发布子模块更改,然后更新子模块的父存储库引用。
删除子模块
# 逆初始化模块,其中{MOD_NAME}为模块目录,执行后可发现模块目录被清空
git submodule deinit {MOD_NAME}
# 删除.gitmodules中记录的模块信息(--cached选项清除.git/modules中的缓存)
git rm --cached {MOD_NAME}
# 提交更改到代码库,可观察到'.gitmodules'内容发生变更
git commit -am "Remove a submodule."