【问题标题】:How to git tag all submodules?如何git标记所有子模块?
【发布时间】:2017-06-01 23:23:02
【问题描述】:

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

git submodule foreach git tag tagName

...但它似乎只是没有错误地返回,什么也没做。

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

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

注意:这是一个与this post 非常相似的问题,但该问题的答案建议依赖超级项目中的子模块 refs。但是,我实际上希望在子模块的 repo 中添加一个标签。

【问题讨论】:

  • 做到了。您希望看到什么回应?
  • 我编辑了原始帖子,因此您可以看到我没有从交易中获得任何标签。
  • 但是现在,我建议阅读下面接受的答案。 @VonC 能够指出我的命令为什么不起作用的方向。

标签: git git-submodules git-tag


【解决方案1】:

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

git submodule update --init --recursive

然后,只需这样做:

 git submodule foreach git tag -l

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

我建议创建一个annotated tag,而不是lightweight one

git submodule foreach git tag -m "tagName" tagName

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

如果您只是在父 repo 级别进行标记,那将包括子模块 gitlink,即它们的 SHA1。在你的情况下,这可能就足够了。

【讨论】:

  • 我编辑了上面的帖子以显示结果标签的列表(无)......即使带有注释标签。 (实际上,在我的用例中,我确实希望在子模块的 repo 上添加一个标签,而不仅仅是父级具有对标记的子模块提交的引用)
  • @Eric 你第一次做git submodule update --init --recursive 吗?
  • 非常有趣!所以,不,我没有。我不认为这是必要的,因为我已经从这个 repo 完成了git submodule add。我认为这足以确保子模块得到更新。但是我按照您的建议运行了更新,之后,git submodule foreach tag... 命令运行并运行良好。
猜你喜欢
  • 2012-01-05
  • 2020-10-16
  • 2011-03-22
  • 1970-01-01
  • 2014-06-15
  • 2015-10-25
  • 1970-01-01
  • 2020-08-26
  • 2011-04-17
相关资源
最近更新 更多