在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 tag --sort=committerdate | tail -1
其他回答
git log --tags --no-walk --pretty="format:%d" | sed 2q | sed 's/[()]//g' | sed s/,[^,]*$// | sed 's ...... '
如果你还需要更多的标签
(git描述-标签有时会给出错误的哈希值,我不知道为什么,但对我来说-max-count 2不工作)
这就是你如何按时间顺序获得最新2个标签名称的列表,在git 1.8.4上完美工作。 对于早期版本的git(如1.7.*),输出中没有“tag:”字符串——只是删除最后一次sed调用
如果你想要两个以上的最新标签-将这个“sed 2q”改为“sed 5q”或任何你需要的
然后,您可以轻松地将每个标记名称解析为变量。
为了只获取当前分支/以当前分支为前缀的标记名上的最新标记,我必须执行以下命令
BRANCH=`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
部门自定义:
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 describe --tags --abbrev=0
在CI/CD进程中描述的问题是,您可能会遇到致命的问题:没有标签可以描述错误。
这将会发生,因为,per git describe——help:
该命令查找可从提交中访问的最新标记。
如果你想要repo中最新的标签,不管你所在的分支是否可以到达这个标签,通常是因为它不是当前分支树的一部分,这个命令会给你整个repo中最近创建的标签:
git tag -l --sort=-creatordate | head -n 1
对于刚才的问题,
如何获得当前分支中最新的标记名称
你想要的
git log --first-parent --pretty=%d | grep -m1 tag:
——first-parent告诉git log不要详述任何合并的历史,——pretty=%d表示只显示装饰,即任何提交的本地名称。Grep -m1表示“只匹配一个”,因此您只获得最近的标记。