781

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

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

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

4

10 回答 10

1097
git tag

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


你还有:

git tag -l <pattern>

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


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

git tag --sort=<type>

按特定顺序排序。

支持的类型是:

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

在前面加上“-”以反转排序顺序。


这列出了两者:

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

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

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

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


话虽如此,Charles Bailey指出 ' git tag -m "..."' 实际上暗示了一个正确的(无符号注释的)标签(选项 ' -a'),而不是一个轻量级的标签。所以你对你的初始命令很好。


这不同于:

git show-ref --tags -d

其中列出了带有提交的标签(请参阅“ Git Tag list, display commit sha1 hashes ”)。
请注意-d,为了取消引用带注释的标记对象(它们有自己的提交 SHA1)并显示实际的标记提交。

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

于 2009-06-30T15:53:32.410 回答
208

列出我喜欢的标签:

git tag -n

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

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

于 2010-01-22T17:26:16.383 回答
53

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
...
于 2013-06-14T05:44:21.947 回答
51

以下是查找远程标签的方法:

git ls-remote --tags origin

于 2018-01-23T07:46:14.577 回答
21

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

$ git tag
v5.5
v6.5

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

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2

获取 git 仓库的最新标签

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

git describe

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

git describe --abbrev=0

其他示例:

git describe --abbrev=0 --tags # gets tag from current branch
git 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 version 开始将无法正常工作1.9.4

但是,有一个简单的解决方法在最新版本中仍然有效:

git tag -l | xargs git tag -d  // remove all local tags
git fetch -t                   // fetch remote tags
于 2018-07-20T15:18:56.390 回答
15

如果不尝试制作,尝试制作git tag应该足够git fetchgit tag

于 2013-04-29T17:20:55.553 回答
10

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

git show `git describe` --pretty=fuller
于 2016-08-17T19:43:34.740 回答
6

如果要在本地检查标签名称,则必须转到创建标签的路径(本地路径)。表示您放置对象的位置。然后输入命令:

git show --name-only <tagname>

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

于 2017-05-09T13:17:57.057 回答
6

您可以列出所有现有标签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只显示第一行。有关更多信息,请务必查看此标签相关文章

于 2018-06-14T07:57:31.667 回答
0

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

于 2020-05-15T14:22:48.427 回答