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

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

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


当前回答

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

git show `git describe` --pretty=fuller

其他回答

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

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

git show `git describe` --pretty=fuller

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

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

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

在Git中列出可用的标记很简单。只需键入git标记(带有可选的-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时,该命令可用于查找不带任何后缀的最近标记名:

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标记

简单地说,如果您试图执行类似gitfetch-p-t的操作,那么从git1.9.4版本开始,它将无法工作。

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

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