submodule版本更新后,调用方如何调用最新版本submodule

背景#

我的hugo博客使用了一个主题,它是作为一个submodule被引用的,如图所示:

其中hugo-theme-codex-my就是我的theme仓库,@后面是我theme的版本

昨天我在部署博客时,Github Action报了一项错误:

大概是在我的hugo theme中某个方法调用过于老旧,并且将要在未来版本移除,给出了一个替代方法。

于是我按照错误信息,将我的theme作了修改,并上传到对应的远程仓库的master分支(仅此一个分支),但重新部署仍然报相同的错误。

原因#

这是因为在调用submodule时,并不是指定submodule的某个分支,而是指定了submodule的某个版本。 我昨天更新了master分支,但我的博客还在调用旧版本,并没有应用最新的修改。

解决#

  1. 首先,如果submodule有多个分支的话,我们可以指定一个分支,我就一个master分支,我还是指定了,修改.gitmodules文件,其中branch字段指定分支。
[submodule "themes/hugo-theme-codex-my"]
	path = themes/hugo-theme-codex-my
	url = git@github.com:yueluz/hugo-theme-codex-my.git
	branch = master
  1. 修改之后执行git submodule init进行重新初始化子模块,使.gitmodules文件生效,然后执行git submodule update --remote -f命令,会根据.gitmodules文件里的内容更新当前项目调用的submodule的版本至最新。执行git diff命令可以看到此时我的博客项目里submodule的版本已经发生了变化。

  1. 此时,再进行部署就会成功完成。