如何在GIT中显示最后N个标签

Her*_*tu' 10 git git-tag

有没有办法在git中显示最后N个标签?

我对模式不感兴趣,因为这可能会改变.例如,假设我有这些标签,我想得到最后3个:

v1.0.0
v1.0.1
v2.0.0
v2.1.0
v3.0.0
Run Code Online (Sandbox Code Playgroud)

基于Pro Git似乎无法实现这一点.或者我错过了什么?

Nic*_*kin 9

这可以通过git tag --sortGit v 2.0.0中引入的选项来完成.

注意:我使用减号-来获得反向排序顺序(默认为最旧到最新).

替换<number>为实际的自然数.

UNIX,Linux,OS X.

git tag --sort=-version:refname | head -n <number>
Run Code Online (Sandbox Code Playgroud)

来自man head:

 head [-n count | -c bytes] [file ...]
Run Code Online (Sandbox Code Playgroud)

此过滤器显示每个指定文件的第一个计数行或字节,如果未指定文件,则显示标准输入.如果省略count,则默认为10.

Windows,UNIX方式

  1. 安装Cygwin
  2. 请参阅UNIX的答案

Windows,本机方式

git tag --sort=-version:refname | Select -First <number>
Run Code Online (Sandbox Code Playgroud)

(Selectserverfault上找到命令信息)

git参考:

--sort=<type>
Run Code Online (Sandbox Code Playgroud)

按特定顺序排序.支持的类型是"refname"(词典顺序),"version:refname"或"v:refname"(标记名称被视为版本)."version:refname"排序顺序也可能受"versionsort.prereleaseSuffix"配置变量的影响.前缀" - "以反转排序顺序.如果未指定此选项,则排序顺序默认为tag.sort变量(如果存在)配置的值,否则为字典顺序.


小智 6

没有一个命令可以做到这一点。为此,您必须使用describe和命令的组合。rev-list

git describe --tags $(git rev-list --tags --max-count=3)
Run Code Online (Sandbox Code Playgroud)

从这里得到答案:https ://stackoverflow.com/a/7979255/2336787