协慌网

登录 贡献 社区

如何列出所有 Git 标签?

在我的存储库中,我已使用以下命令创建了标签。

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'

如何列出存储库中的所有标签?

答案

git tag

应该足够了。请参见git tag手册页


您还有:

git tag -l <pattern>

列出名称与给定模式匹配的标签(如果没有给出模式,则列出所有标签)。
键入不带参数的 “git tag”,还会列出所有标签。


最近(对于 Git 2.0 及更高版本,“如何对 git 标签进行排序?”)

git tag --sort=<type>

按特定顺序排序。

支持的类型是:

  • refname ”(字典顺序),
  • version:refname ” 或 “ v:refname ”(标记名称被视为版本)。

在 “-” 前添加反向排序顺序。


列出了两个:

  • 带注释的标签:完整的对象存储在 Git 数据库中。他们是经过校验和的;包含标记名称,电子邮件和日期;带有标记消息;并可以使用 GNU Privacy Guard(GPG)进行签名和验证。
  • 轻量级标签:指向现有提交的简单指针

注意:有关标记的 git ready 文章不赞成轻量级标记。

没有参数,git 标签会创建一个 “轻量级” 标签,该标签基本上是一个永远不会移动的分支。
轻量级标签仍然很有用,可能用于标记已知的好(或坏)版本,或者将来可能需要使用的一系列提交。
不过,您可能不想推送这些标签

通常,您至少希望通过 - a 选项来创建未签名的标签,或者通过 - s 或 - u 选项使用 GPG 密钥对标签进行签名。


话虽如此,查尔斯 · 贝利(Charles Bailey)指出,一个git tag -m "..."实际上意味着一个正确的(未签名的带注释的)标签(选项-a ),而不是一个轻量级的标签。因此,您可以很好地使用初始命令。


这不同于:

git show-ref --tags -d

其中列出了带有提交的标签(请参阅 “ Git 标签列表,显示提交 sha1 哈希值”)。
请注意-d以便取消引用带注释的标记对象(它们具有自己的提交 SHA1)并显示实际的带标记的提交。

同样, git show --name-only <aTag>将列出标签和相关的提交。

要列出我更喜欢的标签:

git tag -n

-n标志与标签一起显示注释消息的第一行,如果未注释标签,则显示第一提交消息行。

您还可以执行git tag -n5以显示注释的前 5 行。

git show-ref也是非常有用的,因此您可以直接将标签与对应的提交关联:

$ git tag
osgeolive-6.5
v8.0
...

$ git show-ref --tags
e7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.5
8f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0
...