如何获取上一个标签名称?

15

有一些标签:

first
second
third
fourth

我需要获取"second"(第三个)之前的标签。

5个回答

37

git describe --abbrev=0 second^


4
谢谢。这就是我需要的:git describe --abbrev=0 --tags second^ - flk
1
在 Git 版本 2.5.0 上:致命错误:不是一个有效的对象名称 second^。 - JLavoie
7
你是刚才复制了这个指令还是实际上有一个叫做“second”的标签? - aragaer
这个命令在Windows上不起作用,git无法识别 second - sw-enthusiast
请参见上面的注释--“second”是占位符--您应该在此处使用自己的标记。 - aragaer
显示剩余2条评论

9
在最后两个标签之间。
git log $(git describe --abbrev=0 --tags $(git describe --abbrev=0)^)...$(git describe --abbrev=0) 

2

使用任何你喜欢的排序方式来获取当前标签后面的下一个标签的替代解决方案:

git tag --sort=-creatordate | grep -A 1 second | tail -n 1
  1. git tag --sort=-creatordate 按照创建时间从新到旧的顺序打印所有标签:"first second third fourth"。明智地选择排序选项。
  2. grep -A 1 second 过滤出 "second" 和其后面的一行,即 "third"
  3. tail -n 1"second third" 中打印最后一行,我们终于得到了 "third"

1
我费了不少力气才发现,这个问题的被接受答案只会找到从你所在的分支的提交历史可达到的标签(对于许多用例来说没问题)。
我需要获取先前提交,而不管当前分支历史记录如何,因此这个解决方案更全面有效。
git for-each-ref --sort=-creatordate --format '%(refname:short)' refs/tags | sed -n '/second/{n;p;}'

虽然您的回答可能解决了问题,但是包括解释如何以及为什么解决问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。您可以编辑您的答案以添加解释,并指出适用的限制和假设。- 来自审查 - Adam Marshall

0
以下命令也可以使用:
git tag --sort=-creatordate | head -n 3 | tail -n 2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接