如何列出所有Git标签?

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

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

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

808521 次浏览
git tag

应该足够了。见#0手册页


你也有:

git tag -l <pattern>

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


最近(“如何对git标签进行排序?”,用于Git 2.0+)

git tag --sort=<type>

按特定顺序排序。

支持的类型是:

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

添加“-”以反转排序顺序。


它列出了两个:

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

注意:关于标记的git就绪文章不赞成轻量级标签。

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

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


话虽如此,查尔斯·贝利指出'git tag -m "..."'实际上意味着一个正确的(无符号注释的)标记(选项'-a'),而不是一个轻量级的标记。所以你很擅长你的初始命令。


这不同于:

git show-ref --tags -d

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

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

注意:使用git 2.37git show-ref --heads/--tags

列出我喜欢的标签:

git tag -n

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

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

尝试做git tag应该足够了,如果不尝试做git fetch然后git tag

git show-ref也相当有用,因此您可以直接将标签与联系人承诺相关联:

$ git tagosgeolive-6.5v8.0...
$ git show-ref --tagse7e66977c1f34be5627a268adb4b9b3d59700e40 refs/tags/osgeolive-6.58f27e65bddd7d4b8515ce620fb485fdd78fcdf89 refs/tags/v8.0...

要查看有关我有时使用的最新可用标签的详细信息:

git show `git describe` --pretty=fuller

如果您想在本地检查您的标签名称,您必须转到创建标签的路径(本地路径)。这意味着你把你的对象。然后键入命令:

git show --name-only <tagname>

它将显示该标记名称下的所有对象。我在Teradata工作,对象意味着视图、表等

以下是您如何找到远程标签:

git ls-remote --tags origin

您可以列出所有现有的标签git tag,也可以使用git tag -l 'v1.1.*'过滤列表,其中*充当通配符。它将返回一个标有v1.1的标签列表。

您会注意到,当您调用git tag时,您看不到注释的内容。要预览它们,您必须将-n添加到您的命令:git tag -n2

$ git tag -l -n2

v1.0发布版本1.0

v1.1发布版本1.1

该命令列出了所有现有标签,其标签消息最多3行。默认情况下,-n仅显示第一行。有关更多信息,请务必检查此标签相关文章

在Git中列出可用标签很简单。只需键入git tag(可选-l--list)。

$ git tagv5.5v6.5

您还可以搜索与特定模式匹配的标签。

$ git tag -l "v1.8.5*"v1.8.5v1.8.5-rc0v1.8.5-rc1v1.8.5-rc2

获取git存储库的最新标签

该命令查找可从提交中访问的最新标签。如果标签指向提交,则仅显示标签。否则,它会在标签名称后面加上标记对象顶部的附加提交次数和最近提交的缩写对象名称。

git describe

--abbrev设置为0时,该命令可用于查找最接近的tagname,而无需任何后缀:

git describe --abbrev=0

其他例子:

git describe --abbrev=0 --tags # gets tag from current branchgit describe --tags `git rev-list --tags --max-count=1` // gets tags across all branches, not just the current branch

如何修剪远程不存在的本地git标签

简单地说,如果您尝试执行类似于git fetch -p -t的操作,则从git版本1.9.4开始将无法工作。

但是,有一个简单的解决方法仍然适用于最新版本:

git tag -l | xargs git tag -d  // remove all local tagsgit fetch -t                   // fetch remote tags

对于GUI来说,我刚刚发现'gitk'支持命名视图。视图有几个选择提交的选项。一个方便的是一个用于选择“所有标签”。这似乎对我的工作看到标签。

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

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