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

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

输出:

a
b
c

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


当前回答

这里没有过多地提到无注释标记和带注释标记。'describe'作用于带注释的标签,而忽略未带注释的标签。

这是丑陋的,但完成了所要求的工作,它将不会在其他分支上找到任何标记(而不是在下面的例子中命令:master中指定的分支上)

过滤应该被优化(巩固),但这似乎是工作。

git log  --decorate --tags master |grep '^commit'|grep 'tag:.*)$'|awk '{print $NF}'|sed 's/)$//'|head -n 1

欢迎批评,因为我现在要把它用起来:)

其他回答

您可以查看一下git describe,它所做的事情与您所要求的类似。

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

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

对于刚才的问题,

如何获得当前分支中最新的标记名称

你想要的

git log --first-parent --pretty=%d | grep -m1 tag:

——first-parent告诉git log不要详述任何合并的历史,——pretty=%d表示只显示装饰,即任何提交的本地名称。Grep -m1表示“只匹配一个”,因此您只获得最近的标记。

我的第一个想法是你可以使用git rev-list HEAD,它以倒序的顺序列出所有的转速,并结合git标签-contains。当你找到一个引用,其中git tag——contains生成了一个非空列表,你已经找到了最新的标签。

将输出的标签的最新标签提交跨所有分支

git describe --tags $(git rev-list --tags --max-count=1)