文档首页 > > 用户指南> 常用操作> Git Submodule操作

Git Submodule操作

分享
更新时间: 2020/04/09 GMT+08:00

背景信息

有种情况我们经常会遇到:某个工作中的项目A需要包含并使用项目B(第三方库,或者你独立开发的,用于多个父项目的库),如果想要把它们当做两个独立的项目,同时又想在项目A中使用项目B。 Git通过子模块来解决这个问题。 子模块允许你将一个Git仓库作为另一个Git仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。

这时存在一个名叫“.gitmodules”的文件,其中的内容可能是这样的:

1
2
3
[submodule "module_name"]
path = file_path
url = repo_url

这时,位于“file_path”目录下的源代码,将会来自“repo_url”

Web 操作

  • 页面添加子模块

    页面上可以在根目录和多级目录下新建子模块。

    点击扩展按钮完成对应操作,如下图所示。

      

  

  • 页面查询子模块状态、更新、删除子模块

    管理员可以通过查看“设置”页面下“子模块管理”页面,查看子模块状态,更新子模块,删除子模块。

  

  • 页面同步部署密钥

    对于客户端提交的子模块,需要仓库管理员再在“设置”页面下“子模块管理”页面,将父仓库的部署密钥同步到子仓库中,从而保证在构建父仓库是,可以将对应提交的子仓库一同拉取下来。

  

Git客户端操作

添加 Submodule

1
git submodule add <repo> [<dir>] [-b <branch>] [<path>]

之后通过git命令将变更推送到远端。

示例

1
git submodule add git@codehub.devcloud.huaweicloud.com:b1625f025a4a476fbdc0ee9b5ae99b62/WEB-INF.git

拉取包含submodule的仓库

1
git clone <repo> [<dir>] --recursive

示例

1
git clone git@codehub.devcloud.huaweicloud.com:b1625f025a4a476fbdc0ee9b5ae99b62/WEB-INF.git --recursive

获取远端Submodule更新

1
git submodule update --remote

推送更新到子库

1
git push --recurse-submodules=check

删除 Submodule

  1. 删除“.gitsubmodule”中对应submodule的条目。
  2. 删除“.git/config”中对应submodule的条目。
  3. 执行git rm --cached {submodule_path}

路径不要加后面的“/”。

示例:你的submodule保存在“src/main/webapp/WEB-INF/”目录,则执行命令为: git rm --cached src/main/webapp/WEB-INF

更多子模块相关内容

更多详情请参见官方文档Git 工具 - 子模块

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问