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

时间:2015-06-12 14:08:20

标签: git git-tag

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

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

v1.0.0
v1.0.1
v2.0.0
v2.1.0
v3.0.0

基于Pro Git似乎无法实现。或者我错过了什么?

3 个答案:

答案 0 :(得分:9)

这可以使用Git v 2.0.0中引入的git tag --sort选项来完成。

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

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

UNIX,Linux,OS X

git tag --sort=-version:refname | head -n <number>

来自man head

 head [-n count | -c bytes] [file ...]
     

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

Windows,UNIX方式

  1. 安装Cygwin
  2. 请参阅UNIX的答案
  3. Windows,本机方式

    git tag --sort=-version:refname | Select -First <number>
    

    (在serverfault上找到Select命令的信息)

    来自git reference

    --sort=<type>
    
         

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

答案 1 :(得分:3)

没有单一的命令。您必须使用describerev-list命令的组合。

git describe --tags $(git rev-list --tags --max-count=3)

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

答案 2 :(得分:0)

在远程存储库上(使用 Nick Volynkin 的方法):

git ls-remote -tq --sort=-version:refname origin | egrep -v '\^\{}$' | head -n <number>