如何在gitlab中使用子模块

1. 使用场景

如果你有一个项目是由若干个子模块构成的,比如前后端分离的web项目,两个模块关系很密切,CI/CD的过程都希望是可以一起的,但是代码管理呢又希望是分开的,毕竟是不同的人在维护,而且也不希望两个模块间的开发互相影响。之前我们都是创建两个独立的project来维护的,这样就又体现不出来二者的联系了,这时候gitlab的子模块就可以派上用上了~~

2. 使用方法

下面用一个实际的例子来说明吧,我有一个MainModule的项目,下面包含SubModule和SubModule2两个子模块。

2.1 创建子模块

  1. 创建一个空项目,命名为MainModule。
    在这里插入图片描述

  2. 创建另外一个空项目,命名为SubModule

在这里插入图片描述

  1. 在本地用命令行工具将主模块clone下来:git clone git@gitlab.xxx.local:xxx/mainmodule.git 这时目录下只有一个README.md的文件。

  2. 进入到mainmodule目录,使用命令:git submodule add http://gitlab.xxx.local:xxx/submodule.git,这是再看mainmodule目录下会发现多了一个submodule的目录以及.gitmodules的隐藏文件。

在这里插入图片描述

其中.gitmodules文件的内容大体如下:

[submodule "submodule"]
	path = submodule
	url = http://gitlab.xxx.local/xxx/submodule.git
  1. 然后通过git add .以及git commit -m "first commit"提交子模块内容,并通过git push -u origin master命令推送到远端git仓库。

  2. 再在gitlab的页面上查看mainmodule的内容,发现多了一个submodule@xxx的目录,点击后可以直接跳转到submodule的project页面。

在这里插入图片描述

  1. 但这时候我们在本地发现submodule目录下是空的,可是明明submodule子模块应该是有README文件的,别着急,执行命令:git submodule update --init --recursive,这时候再看我们就会发现README文件出现了。

在这里插入图片描述

  1. 同样的办法,可以创建另一个子模块submodule2。

在这里插入图片描述

2.2 子模块代码更新

如果我们更新了子模块的代码,主模块如何进行同步呢?

  1. 试着更新一下submodule2的README文件,随便添加一行内容,然后提交。
  2. 这个时候如果在本地的mainmodule下直接pull是没有办法得到最新的submodule2的代码的,只能通过执行命令:git submodule update --init --remote 注意:--init不能省,否则还是有可能子目录是空的
  3. 通过git status查看会发现有内容变化的提示,需要再将变动的内容进行commit并push到远端仓库。

在这里插入图片描述

2.3 删除子模块

比如希望删除上面创建的submodule2吧:

  1. 本地mainmodule目录下删除submodule2的子目录:rm -rf submodule2
  2. 编辑.gitmodules文件,将submodule2相关的内容删除
  3. 删除.git/config文件里submodule2相关的内容
  4. 删除.git/modules/submodule2目录:rm -rf .git/modules/submodule2
  5. 将变动内容提交即可。

3. 注意事项

  • mainmodule中默认只能看到各个子模块的master分支,如果希望默认显示其它分支,则在add submodule的时候就指定希望显示的分支。
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普普通通程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值