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

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

输出:

a
b
c

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


当前回答

git log --tags --no-walk --pretty="format:%d" | sed 2q | sed 's/[()]//g' | sed s/,[^,]*$// | sed  's ......  '

如果你还需要更多的标签

(git描述-标签有时会给出错误的哈希值,我不知道为什么,但对我来说-max-count 2不工作)

这就是你如何按时间顺序获得最新2个标签名称的列表,在git 1.8.4上完美工作。 对于早期版本的git(如1.7.*),输出中没有“tag:”字符串——只是删除最后一次sed调用

如果你想要两个以上的最新标签-将这个“sed 2q”改为“sed 5q”或任何你需要的

然后,您可以轻松地将每个标记名称解析为变量。

其他回答

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

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}'

如果你想找到应用在特定分支上的最后一个标签,你可以尝试以下方法:

git describe --tag $(git rev-parse --verify refs/remotes/origin/"branch_name")
git tag --sort=committerdate | tail -1

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

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

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