Git标签另一个标签

11

如何在另一个标签的相同引用上打上标签?例如,我想在某个版本“1.0.0.1”的标签上放置标签“Stable_Build”。

除了以下方式,还有更好、更快的方法吗?

git checkout 1.0.0.1
git tag -a Stable_Build
2个回答

7
"

git tag new_tag old_tag如果旧标签是带注释的,则存在问题,如torek所述评论

这是由Robert Dailey在Git邮件列表上演示的。

这就是为什么Git 2.22(2019年第二季度)将警告您,并建议在创建指向另一个标签的注释或签名标签时可能会出错。

"

查看提交 eea9c1e提交 01dc801 (2019年4月4日) 作者为 Denton Liu (Denton-L)
Jeff King (peff), 和 Ævar Arnfjörð Bjarmason (avar)帮助。
(由Junio C Hamano -- gitster --提交 a198562中合并,2019年5月8日)

标签:关于嵌套标签的建议

Robert Dailey在邮件列表中报告了关于嵌套标签的困惑,这很可能是由于错误创建的。
Jeff King指出这不是一个非常常见的情况,创建标签到标签的链接可能是用户错误。

建议在创建此类标签时提供错误提示信息,以表明可能是错误操作。
那些确实想要经常创建指向另一个标签的标签的人可以通过通常的建议机制关闭它。

现在,当您对标签进行标记(嵌套标记)时,您将看到:

hint: You have created a nested tag. The object referred to by your new is
hint: already a tag. If you meant to tag the object that it points to, use:
hint: |
hint: git tag -f nested annotated-v4.0^{}

因此,如果您已经完成了:

git tag stable 1.0.0

您可以通过以下方式解决它:
git tag -f stable 1.0.0^{}

如果你想要用另一个带注释的标签来标记标签1.0.0,那么可能会有一个"git tag --allow-nested-tag -f stable 1.0.0"(但这个功能目前尚未实现)。


1
git tag new_tag old_tag有问题” - 具体是什么问题?例如,如果一个新的未注释标签指向一个已注释标签而不是提交,为什么会引起问题? - ijoseph
1
@ijoseph,问题不在于您正在创建的标签,而在于您使用新标签指向的内容。如果您指向的标签是已注释的标签,则您正在创建一个引用另一个标签(无论是否已注释)的标签!通常,在创建标签时,您想要做的是引用提交,因此才会有torek的评论。(https://dev59.com/t7Dla4cB1Zd3GeqP4TPW#yvfqnYgBc1ULPQZFj165) - VonC
这是有道理的,我已经看到了上面的评论,但我只是想知道在什么实际情况下会出现这种问题。也许一个场景是:如果第一个(带注释的)标记被意外删除,那么第二个标记将变成孤儿,不再指向任何东西,因此无用?或者删除第一个标记将意外地导致第二个标记被删除? - ijoseph
@ijoseph 删除第一个标签不会删除第二个标签,但第二个标签确实会变成孤立的。再次强调,问题在于“期望”:如果您打标签时期望打标记,那么这就是问题所在。 - VonC

5

使用 git tag <new_tag> <old_tag> 命令(详见文档)。

$ git tag stable 1.0.0

$ git tag --list
1.0.0
stable

顺便说一下:它不会指向标签1.0.0,而是指向与标签1.0.0相同的提交。

2
如果现有标签是注释性的,并且您希望新的(轻量级)标签直接指向提交而不是其他注释性标签对象,请考虑使用 git tag new_tag old_tag^{commit}。同样,如果要创建新的注释性标签,请考虑使用 git tag -a new_tag old_tag^{commit}^{commit} 后缀表示将旧标签解析为提交哈希 ID,这是 git checkout 自动执行的操作。 - torek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接