如何获取 git 中的上一个标签

How to get previous tag in git

我希望能够回滚到之前的 git 标签,而不必知道当前标签是什么或之前的标签是什么。

我知道如何获取最新标签:

git describe --abbrev=0 --tags

但是我怎样才能在它之前得到标签呢?

我在网上找不到任何资源来做这件事,所以这是我发现的工作:

 git describe --abbrev=0 --tags `git rev-list --tags --skip=1  --max-count=1`

该子命令获取一个最近标签的哈希值。 --skip=1表示跳过"latest"标签,返回最新的"previous"标签。

如果当前标签是 1.1.5,则返回的前一个标签编号将是 1.1.4

您始终可以使用 ~ 语法,例如,我会这样做:

git describe --abbrev=0 --tags "$(git describe --abbrev=0 --tags)~"

为确保不同分支中没有标签,您可以检查它是否等于以下命令:

git describe --abbrev=0 --tags "$(git describe --abbrev=0 --tags)^"

UPD 2022-05-16

我查看了 describe 帮助,它有以下参数:

--exclude <pattern>
    Do not consider tags matching the given glob(7) pattern, excluding the "refs/tags/" prefix.

因此,获取上一个标签的最简单方法是:

git describe --abbrev=0 --tags --exclude="$(git describe --abbrev=0 --tags)" "$(git describe --abbrev=0 --tags)"