Git: 未注释的标签比有错误注释的标签更糟糕吗?

15

每一个你看到的Git教程都对标签有明确的意见:应该总是使用带注释的标签,其中一个原因是它们被git describe使用。

然而,我认为使用 git describe --tags 也没有什么不好,因为它同样以未注释的标签作为参考点。还有其他关于未注释的标签被认为是不好的吗?

我之所以问这个问题,是因为我刚刚完成了将一个SVN项目转换为Git的工作。 我其实在考虑提供带注释的标签,但如果我没有什么有意义的东西可以加上去,那我应该放什么呢?会不会像“为我们的项目标记1.5版本”这样多余的警告性信息(在SVN评论中已经使用过了)?

对我来说,带注释的标签似乎是一件好事情(你可以将事物标记为另一个作者并可能给出简短的描述),但即使除了原始提交消息外没有任何有意义的东西要说,你是否真的应该使用它们呢?

或者

在哪些情况下未注释的标签不受指责?

编辑:我不是在谈论带有签名的带注释标签(我理解在某些情况下拥有签名标签的优点);我只关心未注释的标签和无签名的带注释标签之间的区别。

编辑2:追加另一个问题以扩大范围,也许可以获得一些关于现实生活中最佳实践的深入见解

在什么情况下你会使用未注释的标签?当你这样做时,你是否感到难过?


2
请参见http://stackoverflow.com/questions/4971746/why-should-i-care-about-lightweight-vs-annotated-tags - dubek
可能是重复的问题注释和未注释标签有什么区别? - Ciro Santilli OurBigBook.com
2个回答

4

一个带注释的标签实际上是一个标签对象。它有作者、描述、时间戳并指向一个提交。

轻量级标签仅指向一个提交,不包含其他信息。它与分支更相似,而不是标记。


真实的。但我的问题不是什么是注释标签。我想知道即使描述和作者都是冗余的,我是否应该使用它们。 - Debilski
3
我认为描述和作者并不是多余的。标记发布的人不一定是编写代码的人(而且,也不一定是提交代码的人)。我个人从未发现轻量级标签有什么好处。 - Dustin

4

man git-tag 的说明:

注释标签用于发布,而轻量级标签用于私有或临时对象标签。

所以基本上不要推送轻量级标签。

考虑到这一点,所有的行为设计选择都是有道理的:

  • 注释标签可以包含与它们指向的提交不同的消息、创建者和日期。因此,你可以使用它们来描述一个发布版本,而不必进行发布提交。

    轻量级标签没有额外的信息,也不需要,因为你只会自己使用它来开发。

  • git push --follow-tags 只会推送注释标签,以避免发布你的本地标签。

  • git describe 回答了这个问题:“这个提交属于哪个发布版本?”,这是一个常见的用例。

另请参阅:


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