如何列出所有Git标签?


674

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

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

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

Answers:


952
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>将列出标签和关联的提交。


6
可能值得添加-m或-F表示-a(如果显式提供了-a,-s或-u中的非值。如果没有创建“适当的”标记对象,则不能有标记消息。)
CB Bailey

1
自我说明:在这次投票中,我在堆栈溢出方面通过了80万(2018年8月31日),在达到700000(2017年8月6日)之后的一年零一个月。
VonC '18

190

要列出我更喜欢的标签:

git tag -n

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

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


48

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
...

1
习惯了Mercurial的hg tagsgit show-ref给我标签和修订。
贾斯汀


15

尽量让git tag它应该是不够的,如果不设法使git fetch然后git tag


4
我认为他的意思是:git tag如果您只想查看可用标签列表,则运行命令就足够了。如果看不到某些您认为可能存在于远程标签的标签,则您的本地标签可能与远程标签不同步。在这种情况下,请先从远程获取最新的参考/记录git fetch,然后再从实际获取git tag。我通常会像这样运行一线:$ git fetch -p && git tag确保我正在寻找最新和最伟大的东西。
demisx

11

在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

rev-list相关的命令给了我一个列表,但是以一个错误结尾:v0.1.0-rc1 fatal: No tags can describe '5db7534...4a94'. Try --always, or create some tags.
not2qubit


6

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

git show --name-only <tagname>

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


4

您可以列出所有现有标签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仅显示第一行。有关更多信息,请确保也查看与该标签相关的文章


0

对于GUI而言,我刚刚发现'gitk'支持命名视图。该视图具有几个用于选择提交的选项。一个方便的选择框是用于选择“所有标签”的框。这似乎对我有用,以查看标签。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.