如何获取 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)"
我希望能够回滚到之前的 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)"