Git 描述未能 return 最近的注释标签

Git describe fails to return most recent annotated tag

我写了一个函数,它使用 git 带注释的标签来创建新版本 and/or 为我的项目增加 semver 样式版本号。

我正在添加单元测试并注意到 git describe --abbrev=0 无法检索最新的标签,只有 几个 git tag -a <tag> -m <msg> 运行 在一个序列中。

我认为这与为同一提交创建的这些标签有关,但我认为 annotated 标签不应该是这种情况。

预期行为:

git tag 1 -m v1; sleep 1; git tag 2 -m v2; sleep 1; git tag 3 -m v3
git describe --abbrev=0
3 

重现问题:

git tag 1 -m v1; git tag 2 -m v2; git tag 3 -m v3
git describe --abbrev=0
1

我发现每次提交执行 一个 注释标记更容易。

首先,检索带有--abbrev=0的最后一个注释标签,检查当前提交是否包含它,如果是则删除它。

last_version=$(git describe --abbrev=0)

if git tag --contains $(git rev-parse HEAD) | grep -q "^$last_version$"; then
  git tag -d $last_version
fi

git tag $version -m $msg