在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描述——标签
返回当前分支能看到的最后一个标记
其他回答
将输出的标签的最新标签提交跨所有分支
git describe --tags $(git rev-list --tags --max-count=1)
对于刚才的问题,
如何获得当前分支中最新的标记名称
你想要的
git log --first-parent --pretty=%d | grep -m1 tag:
——first-parent告诉git log不要详述任何合并的历史,——pretty=%d表示只显示装饰,即任何提交的本地名称。Grep -m1表示“只匹配一个”,因此您只获得最近的标记。
我不知道为什么这个问题没有答案。即所有标签(包括无注释的标签),不带后缀:
git describe --tags --abbrev=0
这里没有过多地提到无注释标记和带注释标记。'describe'作用于带注释的标签,而忽略未带注释的标签。
这是丑陋的,但完成了所要求的工作,它将不会在其他分支上找到任何标记(而不是在下面的例子中命令:master中指定的分支上)
过滤应该被优化(巩固),但这似乎是工作。
git log --decorate --tags master |grep '^commit'|grep 'tag:.*)$'|awk '{print $NF}'|sed 's/)$//'|head -n 1
欢迎批评,因为我现在要把它用起来:)
在CI/CD进程中描述的问题是,您可能会遇到致命的问题:没有标签可以描述错误。
这将会发生,因为,per git describe——help:
该命令查找可从提交中访问的最新标记。
如果你想要repo中最新的标签,不管你所在的分支是否可以到达这个标签,通常是因为它不是当前分支树的一部分,这个命令会给你整个repo中最近创建的标签:
git tag -l --sort=-creatordate | head -n 1