如何列出所有Git标签?

Léo*_* 준영 607 git git-tag

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

git tag v1.0.0 -m 'finally a stable release'
git tag v2.0.0 -m 'oops, there was still a major bug!'
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 859

git tag
Run Code Online (Sandbox Code Playgroud)

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


你还有:

git tag -l <pattern>
Run Code Online (Sandbox Code Playgroud)

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


最近(Git 2.0+的" 如何排序git标签? ")

git tag --sort=<type>
Run Code Online (Sandbox Code Playgroud)

按特定顺序排序.

支持的类型是:

  • " 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
Run Code Online (Sandbox Code Playgroud)

其中列出了包含其提交的标记(请参阅" Git标记列表,显示提交sha1哈希 ").
请注意-d,为了取消引用带注释的标记对象(具有自己的提交SHA1)并显示实际的标记提交.

同样,git show --name-only <aTag>将列出标记和关联的提交.

  • 值得添加的是-m或-F暗示-a(如果非-a,-s或-u非显式提供.如果没有创建'正确的'标记对象,则无法获得标记消息. (6认同)

fin*_*inn 177

要列出我更喜欢的标签:

git tag -n
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这是我搜索的解决方案,用于列出标签及其描述。多谢.. (2认同)

Cam*_*mpa 44

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
...
Run Code Online (Sandbox Code Playgroud)


Dim*_*ele 28

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

git ls-remote --tags origin

  • 正是我一直在寻找的东西!谢谢。另外,有没有办法只获取标签名称,因为此命令显示 SHA 和带有标签的引用字符串的完整转储? (2认同)

tot*_*oto 14

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

  • 我认为他的意思是:如果你只是想查看可用标签列表,那么运行`git tag`命令就足够了.如果您看不到某些您认为可能存在于遥控器上的标签,那么您的本地标签可能与遥控器不同步.在这种情况下,从远程首先`git fetch`获取最新的refs/heads,然后是实际的`git tag`.我通常像这样运行一个单行:`$ git fetch -p && git tag`只是为了确保我看到最新和最好的. (4认同)

And*_*ura 10

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

git show `git describe` --pretty=fuller
Run Code Online (Sandbox Code Playgroud)


Lye*_*UKH 9

在Git中列出可用标签很简单。只需输入git tag(使用-l或即可--list)。

$ git tag
v5.5
v6.5
Run Code Online (Sandbox Code Playgroud)

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

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
Run Code Online (Sandbox Code Playgroud)

在git仓库上获取最新标签

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

git describe
Run Code Online (Sandbox Code Playgroud)

随着--abbrev设置0,该命令可以用来找出最接近tagname无任何后缀:

git describe --abbrev=0
Run Code Online (Sandbox Code Playgroud)

其他例子:

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
Run Code Online (Sandbox Code Playgroud)

如何修剪远程不存在的本地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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

git show --name-only <tagname>
Run Code Online (Sandbox Code Playgroud)

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


Nes*_*ric 5

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

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

$ git tag -l -n2
Run Code Online (Sandbox Code Playgroud)

v1.0 发布版本 1.0

v1.1 发布版本 1.1

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