在Git中获取最新标签的最简单方法是什么?

git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag

输出:

a
b
c

我应该写一个脚本来获得每个标记的日期时间并比较它们吗?


当前回答

如果你需要一个获得当前分支上最新标签名称(通过标签日期)的一行程序:

git for-each-ref refs/tags --sort=-taggerdate --format=%(refname:short) --count=1 --points-at=HEAD

我们使用它来设置设置中的版本号。

输出的例子:

v1.0.0

也适用于Windows。

其他回答

要获得最新的标签,你可以这样做:

$ git for-each-ref refs/tags --sort=-taggerdate --format='%(refname)' --count=1

当然,您可以根据需要更改count参数或排序字段。似乎 你可能想问一个稍微不同的问题,但这确实回答了我理解的问题。

git tag --sort=committerdate | tail -1

在CI/CD进程中描述的问题是,您可能会遇到致命的问题:没有标签可以描述错误。

这将会发生,因为,per git describe——help:

该命令查找可从提交中访问的最新标记。

如果你想要repo中最新的标签,不管你所在的分支是否可以到达这个标签,通常是因为它不是当前分支树的一部分,这个命令会给你整个repo中最近创建的标签:

git tag -l --sort=-creatordate | head -n 1

要获得最新的标签(后面的示例输出):

git describe --tags --abbrev=0   # 0.1.0-dev

要获得最近的标签,以及被标记对象顶部的额外提交数&更多:

git describe --tags              # 0.1.0-dev-93-g1416689

要获取最近的带注释的标签:

git describe --abbrev=0
git tag --sort=-refname | awk 'match($0, /^[0-9]+\.[0-9]+\.[0-9]+$/)' | head -n 1 

它在所有与语义版本匹配的分支中获取最新的标记。