如何git标记所有子模块?

How to git tag all submodules?

我想标记我项目的所有子模块。我试着这样做:

git submodule foreach git tag tagName

...但似乎 return 没有任何错误,什么也没做。

编辑:这是我尝试的结果:

谁能告诉我如何正确标记所有子模块?

注意:这是一个与 非常相似的问题,但该问题的答案建议依赖于超级项目中的子模块引用。但是,我实际上想要子模块的回购中的标签。

首先,确保你的子模块文件夹有一个内容:

git submodule update --init --recursive

然后,只需执行:

 git submodule foreach git tag -l

您应该看到,对于每个子模块,tagName
这意味着您之前的命令确实标记了这些子模块。

我建议制作 annotated tag though, not a lightweight one:

git submodule foreach git tag -m "tagName" tagName

这意味着您可以从每个子模块推送该标签。

如果您只是在父存储库级别标记,那将包括子模块 gitlink,即它们的 SHA1。对你来说这可能就足够了。