什么情况下应该在git tag命令中加上`-a`标志?

问题描述 投票:0回答:5

我知道这两种命令之间的技术差异(没有

-a
标志的使用创建一个轻量级标签,它本质上是一个永远不会移动的分支,而使用
-a
在Git的对象数据库中创建一个完整的对象包括提交者的姓名、电子邮件等)。

问题是:我应该在我的项目中使用哪一个(例如,在 Github 上指示发布版本)?如果一个人比另一个人更受欢迎,为什么还有另一个选择?每个版本的用例是什么?

git github git-tag
5个回答
14
投票

我想说的是,对于已发表的作品,您应该始终使用带注释的标签。额外的信息永远不会伤害你。

轻量级标签让我觉得更适合你懒惰的时候。可能是一个临时标签(只要确保您不会不小心推送它;实际上您可以只使用一个分支),或者可能是个人存储库,其中额外信息用处不大。我的猜测是许多较小的项目也会这样做;他们只是并不真正关心这些信息。可能只有一个集成商,没有人关心验证签名标签,它们只是发布版本的简单标记。 (我仍然认为你应该更喜欢带注释的标签,以防万一!)

另一种思考方式:轻量级标签有点像编写非常糟糕的提交消息。你真的不应该这样做,但有时人们会这样做,通常是在没有人看的情况下。


9
投票

每个版本的用例是什么?

man git-tag 说:

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

某些行为确实以本建议有用的方式区分它们,例如:

  • 带注释的标签可以包含与它们指向的提交不同的消息、创建者和日期。因此,您可以使用它们来描述发布,而无需进行发布提交。轻量级标签没有额外的信息。
  • git push --follow-tags 只会推送带注释的标签
  • git describe
    没有命令行选项只能看到带注释的标签

另见:


4
投票

如果你想推送/获取它们,那么你应该使用带注释的标签。


4
投票

几年前我对此有意见,我认为它可能仍然相关。


3
投票

最常见的风格是使用带注释的标签作为永久标签,你希望推送的东西,你希望别人看到的东西。然后将轻量级标签用于临时标签,即您不会推送且不希望其他人看到的东西。

© www.soinside.com 2019 - 2024. All rights reserved.