带注释和未注释的标签有什么区别?

use*_*301 274 tags git git-tag

如果我想标记当前提交.我知道以下两个命令行都有效:

git tag <tagname>
Run Code Online (Sandbox Code Playgroud)

git tag -a <tagname> -m '<message>'
Run Code Online (Sandbox Code Playgroud)

这些命令有什么区别?

Tod*_*obs 214

TL; DR

命令之间的区别在于,一个命令会为您提供标记消息,而另一个则不提供.带注释的标签有一条可以用git-show(1)显示的消息,而没有注释的标签只是一个指向提交的命名指针.

更多关于轻量级标签

根据文档:"要创建轻量级标记,请不要提供任何-a,-s或-m选项,只需提供标记名称".在带注释的标签上写入消息还有一些不同的选项:

  • 当您使用时git tag <tagname>,Git将在当前版本中创建一个标记,但不会提示您注释.它将被标记而没有消息(这是一个轻量级标记).
  • 使用时git tag -a <tagname>,Git会提示您输入注释,除非您还使用了-m标志来提供消息.
  • 当您使用时git tag -a -m <msg> <tagname>,Git将标记提交并使用提供的消息对其进行注释.
  • 当您使用时git tag -m <msg> <tagname>,Git的行为就像您传递了注释的-a标志并使用提供的消息一样.

基本上,它只是等于您是否希望标签具有注释以及与之相关的其他信息.

  • "带注释"和"轻量级"标签之间的区别超出了消息.你可以在没有消息的情况下使用带注释的标签(`git tag -a <tag> -m''`),但带注释的标签总是有*tagger*(作者)和*date*. (97认同)
  • 另一个需要注意的重要事项是,当您使用``git push --follow-tags``将标签推送到远程存储库时,只会推送带注释的标签. (40认同)
  • 标签"注释"和提交消息之间有区别吗? (4认同)
  • @SteveBennett是的.标记注释不是提交消息.你不能用git-log(1)看到它; 你需要使用git-show(1). (3认同)
  • 作为对 @Xatoo 注释的补充,`git push origin --tags` 推送两种类型的标签:带注释的标签和轻量级标签。 (2认同)

Cir*_*四事件 181

推送带注释的标签,保持轻量级本地

man git-tag 说:

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

某些行为会以这种建议有用的方式区分它们,例如:

  • 带注释的标签可以包含与它们指向的提交不同的消息,创建者和日期.因此,您可以使用它们来描述发布而无需进行发布提交.

    轻量级标签没有这些额外信息,也不需要它,因为您只是自己使用它来开发.

  • git push --follow-tags只会推送带注释的标签
  • git describe 没有命令行选项只能看到带注释的标签

内部差异

奖金

  • 这比目前接受的答案清楚得多。谢谢。 (4认同)
  • “确定标签是否被注释”就是为此而来的。很好的答案! (3认同)

Lui*_*uis 37

大的差异是完全解释在这里.

基本上,轻量级标签只是指向特定提交的指针.没有保存进一步的信息 ; 另一方面,带注释的标签常规对象,它们具有作者和日期,并且可以被引用,因为它们具有自己的SHA密钥.

如果知道标记了什么以及何时与您相关,那么请使用带注释的标签.如果您只想标记开发中的特定点,无论是谁以及何时这样做,那么轻量级标签就足够了.

通常你会去注释标签,但这完全取决于项目的Git大师.


归档时间:

查看次数:

82955 次

最近记录:

6 年,3 月 前