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

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标记手册页


您还可以:

git tag -l <pattern>

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


最近(“How to sort git tags?”,针对git 2.0+)

git tag --sort=<type>

按特定顺序排序。支持的类型为:“refname”(词典顺序),“版本:refname”或“v:refname”(标记名被视为版本)。前置“-”以反转排序顺序。


其中列出了以下两项:

注释标签:存储在Git数据库中的完整对象。它们被校验和;包含标签名称、电子邮件和日期;具有标记消息;并且可以使用GNU隐私保护(GPG)进行签名和验证。轻量级标记:指向现有提交的简单指针

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

在没有参数的情况下,git标记创建了一个“轻量级”标记,它基本上是一个永不移动的分支。不过,轻量级标记仍然很有用,可能用于标记已知的好(或坏)版本,或者将来可能需要使用的一系列提交。然而,您可能不想推送这些类型的标签。通常,您至少需要传递-a选项来创建一个无符号标记,或者通过-s或-u选项使用GPG密钥对标记进行签名。


尽管如此,Charles Bailey指出,“git标记-m“…”实际上意味着一个正确的(无符号注释的)标记(选项'-a'),而不是轻量级的标记。所以你的初始命令很好。


这不同于:

git show-ref --tags -d

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

类似地,git show--name only<aTag>将列出标记和关联的提交。

注意:使用Git 2.37和Git show ref--heads/--tags。

其他回答

git tag

应该足够了。参见git标记手册页


您还可以:

git tag -l <pattern>

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


最近(“How to sort git tags?”,针对git 2.0+)

git tag --sort=<type>

按特定顺序排序。支持的类型为:“refname”(词典顺序),“版本:refname”或“v:refname”(标记名被视为版本)。前置“-”以反转排序顺序。


其中列出了以下两项:

注释标签:存储在Git数据库中的完整对象。它们被校验和;包含标签名称、电子邮件和日期;具有标记消息;并且可以使用GNU隐私保护(GPG)进行签名和验证。轻量级标记:指向现有提交的简单指针

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

在没有参数的情况下,git标记创建了一个“轻量级”标记,它基本上是一个永不移动的分支。不过,轻量级标记仍然很有用,可能用于标记已知的好(或坏)版本,或者将来可能需要使用的一系列提交。然而,您可能不想推送这些类型的标签。通常,您至少需要传递-a选项来创建一个无符号标记,或者通过-s或-u选项使用GPG密钥对标记进行签名。


尽管如此,Charles Bailey指出,“git标记-m“…”实际上意味着一个正确的(无符号注释的)标记(选项'-a'),而不是轻量级的标记。所以你的初始命令很好。


这不同于:

git show-ref --tags -d

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

类似地,git show--name only<aTag>将列出标记和关联的提交。

注意:使用Git 2.37和Git show ref--heads/--tags。

因为以下两个命令的顺序和列表长度相同,所以这里是bash中的一个示例:

paste <(git tag -l) <(git tag -l | xargs -n1 git rev-parse)

要列出我喜欢的标记:

git tag -n

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

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

尝试生成git标记,如果不尝试生成gitfetch,那么就应该足够了。

此外,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
...