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

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

输出:

a
b
c

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


当前回答

如果你的标签是可排序的:

git tag --merged $YOUR_BRANCH_NAME | grep "prefix/" | sort | tail -n 1

其他回答

我不知道为什么这个问题没有答案。即所有标签(包括无注释的标签),不带后缀:

git describe --tags --abbrev=0

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

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 

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

这是一个老线程,但似乎很多人都忽略了OP问题最简单、最简单、最正确的答案:要获得当前分支的最新标记,您可以使用git describe HEAD。完成了。

编辑:您还可以提供任何有效的refname,甚至远程;也就是说,git describe origin/master会告诉你从origin/master可以到达的最新标签。

为了只获取当前分支/以当前分支为前缀的标记名上的最新标记,我必须执行以下命令

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags --abbrev=0 $BRANCH^ | grep $BRANCH

主分支:

git checkout master

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

master-1448

部门自定义:

git checkout 9.4

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags 
--abbrev=0 $BRANCH^ | grep $BRANCH

9.4-6

我最后需要做的是增加并获得标签+1用于下一个标签。

BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags  --abbrev=0 $BRANCH^ | grep $BRANCH | awk -F- '{print $NF}'