文档首页 > > 用户指南> 云端仓库管理> 子模块管理(Git Submodule操作)

子模块管理(Git Submodule操作)

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

背景信息

子模块(submodule)是Git为管理仓库共用而衍生出的一个工具,通过子模块您可以将公共仓库作为子目录包含到您的仓库中,并能够双向更新该公共仓库的代码,借助子模块您能将公共仓库隔离、复用,能随时拉取最新代码以及对它提交修复,能大大提高您的团队效率。

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

子模块将被记录在一个名叫“.gitmodules”的文件中,其中会记录子模块的信息:
1
2
3
[submodule "module_name"]      #子模块名称
path = file_path               #子模块在本仓库(父仓)中文件的存储路径。
url = repo_url                 #子模块(子仓库)的远程仓地址

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

控制台操作

  • 控制台添加子模块
    • 入口一:

      可以在仓库的文件列表中,添加子模块。

      单击扩展按钮,选择“新建子模块”,如下图所示。

    • 入口二:

      可以在仓库设置中,为仓库创建子模块。

      其操作路径为 设置 > 仓库管理 > 子模块设置 > 新建子模块

    • 填写说明

      使用以上两种方法均可进入“新建子模块”页面。

      请参考下表填写,完成后单击“确定”按钮,即可完成新建子仓库有操作。

      表1 新建子仓库—字段说明

      字段

      填写说明

      子仓库

      选择一个仓库作为子仓库,目前只能从本项目下。

      子仓库分支

      选择同步子仓库的哪条分支到父仓库。

      子仓库路径

      配置子仓库在父仓库中的存储路径,注意用“/”分割层级,如下图所示

      备注

      作为您新建子仓库的备注信息。可以在文件历史中查找到本次操作。

      子仓库新建完成后,可以在仓库文件列表的对应目录内找到子模块(子仓库)内容,其对应的文件左侧图标为

  • 控制台查询子模块状态、更新、删除子模块

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

  • 控制台同步部署密钥

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

Git客户端操作

添加 Submodule

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

示例:

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

拉取包含submodule的仓库

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

示例:

1
git clone git@codehub.devcloud.huaweicloud.com:****/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

提交反馈 取消

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

智能客服提问云社区提问