我如何在创builddate的时候列出我的Git仓库中的所有标签?

我需要一些方法来列出我的系统中创builddate的所有标记,但不知道是否可以通过git-log获取这些数据。 想法?

如果是注释标签,则可以使用标签date:

git for-each-ref --sort=taggerdate --format '%(refname) %(taggerdate)' refs/tags 

但是,如果它是一个轻量级的标签,那么就没有关于它什么时候被创build的信息(它所做的只是命名一个对象)。

 git log --tags --simplify-by-decoration --pretty="format:%ci %d" 

从(没有date字段)也不错的输出:

 git log --tags --decorate --simplify-by-decoration --oneline 

要查看具有依赖关系和条带线性提交的完整历史logging(只有基本事件,如标记和分支/合并):

 git log --graph --decorate --simplify-by-decoration --oneline --all 

Git 2.8(2016年3月)logging了另一个可以追溯到git 1.4.4(2006年10月)的选项。
见Eric Wong( ele828 ) 提交的e914ef0 (2016年1月5日) 。
(由Junio C gitstergitster合并-于2016年1月20日的gitster 提交 )

查看新的Documentation/git-for-each-ref.txt

对于提交和标记对象,根据对象types,特殊的creatordatecreator字段将与committertagger字段中的相应date或名称 – 电子邮件date元组相对应。
这些打算用于混合注释和轻量级标签

所以使用creatordate可以使用标签:

 git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \ sort -n | awk '{ print $4, $3; }' 

要么:

 git tag --sort=-creatordate 

正如我在“ 如何通过rc-XYZWforms的版本string顺序对git标签进行sorting? ”中所详细描述的那样,您可以将一个sorting顺序添加到git tag (自Git 2.0 June 2014)。

该sorting顺序包括字段名称(在git for-each-ref列出) taggerdate 。 这允许git tag --sort=taggerdate ( 下面由DarVar提到)
作为一个例子,在git/git v2.10.0最后会列出v2.10.0标签:

 v2.9.1 v2.9.2 v2.9.3 v2.10.0-rc0 v2.10.0-rc1 v2.10.0-rc2 v2.10.0 

默认的顺序不会( git tag ):

 v2.1.2 v2.1.3 v2.1.4 v2.10.0 v2.10.0-rc0 v2.10.0-rc1 v2.10.0-rc2 v2.2.0 

要根据提交date对已注释的标签和轻量级标签进行sorting,我正在使用:

 git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \ sort -n | awk '{ print $4, $3; }' 

这个命令将按时间顺序列出每个标签和相关的提交对象id。

这一行显示date和标签没有任何大惊小怪。

 git tag --format='%(creatordate:short)%09%(refname:strip=2)' 

输出:

 2015-04-01 storaged-2.0.0 2015-06-11 storaged-2.1.0 2015-08-06 storaged-2.1.1 ... 

如果您不喜欢默认情况下如何对标签进行sorting,则可以使用选项--sort=creatordate按date进行sorting。 有关更多详细信息,请参阅VonC答案 。

 git tag --sort=-taggerdate 

根据手册页,“前缀 – 按值的降序sorting”。

git tag使用与git-for-each-ref相同的sorting键,这是logging密钥的地方。

使用Git version 2.10.0.windows.1

git tag --sort=taggerdate

在前面提到的方法的基础上,我想也看到列表中的实际标签date,所以我的使用版本是:

 git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(creatordate:short) %(refname) %(*objectname) %(objectname)' refs/tags | sort -n | awk '{ print $3, $5, $4 }'