如何在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 log --first-parent --pretty=%d | grep -m1 tag:
--first-parent
告诉 git log
不要详细列出任何合并历史记录,--pretty=%d
表示仅显示装饰(即提交的本地名称)。grep -m1
表示“仅匹配一次”,因此您只会得到最近的标签。
这是一个旧的线程,但似乎很多人都错过了对OP问题最简单、最容易和最正确的回答:要获取当前分支的最新标签,您可以使用git describe HEAD
。完成。
编辑:您还可以提供任何有效的refname,甚至是远程的;即git describe origin/master
将告诉您可以从origin/master到达的最新标签。
for-each-ref
命令(https://dev59.com/wHM_5IYBdhLWcg3wXx_Z#5261470)和 rev-list
和 describe
的组合(https://dev59.com/wHM_5IYBdhLWcg3wXx_Z#7979255)。 - Julien Carsiquegit describe branchname --tags
对我来说可以获取分支上最新的标签(git版本2.12.2)。 - Rob_MBRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags --abbrev=0 $BRANCH^ | grep $BRANCH
主分支:
git checkout master
BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags
--abbrev=0 $BRANCH^ | grep $BRANCH
master-1448
Branch custom:
git checkout 9.4
BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags
--abbrev=0 $BRANCH^ | grep $BRANCH
9.4-6
我的最终需求是对标签进行递增并获取下一个标签的+1。
BRANCH=`git rev-parse --abbrev-ref HEAD` && git describe --tags --abbrev=0 $BRANCH^ | grep $BRANCH | awk -F- '{print $NF}'
如果您的标签是可排序的:
git tag --merged $YOUR_BRANCH_NAME | grep "prefix/" | sort | tail -n 1
这里没有提到未标注标签和已标注标签的区别。'describe' 命令适用于已标注的标签,而忽略未标注的标签。
这种方法虽然不太美观,但能够完成所需任务,并且不会在其他分支(以及命令中指定的分支之外:如下面示例中的主分支)中找到任何标签。
过滤应该进行优化(合并),但是也能够完成所需任务。
git log --decorate --tags master |grep '^commit'|grep 'tag:.*)$'|awk '{print $NF}'|sed 's/)$//'|head -n 1
欢迎批评,因为我现在要把它用起来了 :)