如何git标记所有子模块?
我想标记我的项目的所有子模块。我试图做到这一点:如何git标记所有子模块?
git submodule foreach git tag tagName
......但它似乎只是返回没有错误,没有做任何事情。
编辑:这是我尝试的结果:
有人能告诉我如何正确地标记所有子模块?
注意:这是一个非常类似的问题this post,但该答案建议依赖超级项目中的子模块参考。但是,我实际上喜欢子模块回购中的标签。
首先,确保你的子模块文件夹中有一个内容:
git submodule update --init --recursive
然后,只需做:
git submodule foreach git tag -l
你应该看到,每个submdule,tagName
。
意思是你之前的命令确实标记了这些子模块。
我会建议作出annotated tag虽然不是lightweight one:
git submodule foreach git tag -m "tagName" tagName
这意味着你可以从每个子模块推动该标签。
如果您只是在父级回购级别进行标记,那将包含子模块gitlink,即它们的SHA1。你的情况可能够了。
我编辑了上面的帖子,显示结果标签列表(无)......即使带有注释标签。 (在我的使用案例中,我确实需要在子模块的repo上使用标签,而不是仅对具有对已标记的子模块提交的引用的父项) – Eric
@Eric是否执行了'git submodule update --init - 递归的第一个? – VonC
非常有趣!所以,不,我没有。我不认为这是必要的,因为我已经完成了这个回购的'git submodule add'。我认为这足以确保子模块得到更新。但是我按照你的建议运行了更新,之后,'git submodule foreach tag ...'命令运行并运行得很好。 – Eric
这样做。你期望看到什么反应? – jthill
我编辑了原始帖子,以便您看到我没有收到任何标签。 – Eric
但现在,我建议阅读下面接受的答案。 @VonC能够指出我为什么我的命令不起作用的方向。 – Eric