在Git中获取最新标签的最简单方法是什么?
git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag
输出:
a
b
c
我应该写一个脚本来获得每个标记的日期时间并比较它们吗?
在Git中获取最新标签的最简单方法是什么?
git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag
输出:
a
b
c
我应该写一个脚本来获得每个标记的日期时间并比较它们吗?
当前回答
我不知道为什么这个问题没有答案。即所有标签(包括无注释的标签),不带后缀:
git describe --tags --abbrev=0
其他回答
git describe --abbrev=0 --tags
如果你没有看到latest标签,请确保在运行之前获取origin:
git remote update
要获得最新的标签(后面的示例输出):
git describe --tags --abbrev=0 # 0.1.0-dev
要获得最近的标签,以及被标记对象顶部的额外提交数&更多:
git describe --tags # 0.1.0-dev-93-g1416689
要获取最近的带注释的标签:
git describe --abbrev=0
如果您需要最后两个标记(例如,为了生成当前标记和前一个标记之间的更改日志),下面的工作对我来说是有效的。我只在最新标签是HEAD的情况下测试过它。
PreviousAndCurrentGitTag=`git describe --tags \`git rev-list --tags --abbrev=0 --max-count=2\` --abbrev=0`
PreviousGitTag=`echo $PreviousAndCurrentGitTag | cut -f 2 -d ' '`
CurrentGitTag=`echo $PreviousAndCurrentGitTag | cut -f 1 -d ' '`
GitLog=`git log ${PreviousGitTag}..${CurrentGitTag} --pretty=oneline | sed "s_.\{41\}\(.*\)_; \1_"`
它适合我的需求,但因为我不是git巫师,我相信它可以进一步改进。我还怀疑如果提交历史向前移动,它会中断。我只是想说点有用的。
如果你想找到应用在特定分支上的最后一个标签,你可以尝试以下方法:
git describe --tag $(git rev-parse --verify refs/remotes/origin/"branch_name")
如果你需要一个获得当前分支上最新标签名称(通过标签日期)的一行程序:
git for-each-ref refs/tags --sort=-taggerdate --format=%(refname:short) --count=1 --points-at=HEAD
我们使用它来设置设置中的版本号。
输出的例子:
v1.0.0
也适用于Windows。