有没有办法在git中显示最后N个标签?
我对模式不感兴趣,因为这可能会改变。例如,让我说我有这些标签,我想得到最后3个:
v1.0.0
v1.0.1
v2.0.0
v2.1.0
v3.0.0
基于Pro Git似乎无法实现。或者我错过了什么?
答案 0 :(得分:9)
这可以使用Git v 2.0.0中引入的git tag --sort
选项来完成。
注意:我使用减号-
来获得反向排序顺序(默认为最旧到最新)。
将<number>
替换为实际的自然数。
git tag --sort=-version:refname | head -n <number>
来自man head
:
head [-n count | -c bytes] [file ...]
此过滤器显示每个指定文件的第一个计数行或字节,如果未指定文件,则显示标准输入的第一个计数行或字节。 如果省略count,则默认为10.
git tag --sort=-version:refname | Select -First <number>
(在serverfault上找到Select
命令的信息)
--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)
没有单一的命令。您必须使用describe
和rev-list
命令的组合。
git describe --tags $(git rev-list --tags --max-count=3)
答案 2 :(得分:0)
在远程存储库上(使用 Nick Volynkin 的方法):
git ls-remote -tq --sort=-version:refname origin | egrep -v '\^\{}$' | head -n <number>