我如何在创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 gitster – gitster合并-于2016年1月20日的gitster 提交 ) 
 查看新的Documentation/git-for-each-ref.txt 
对于提交和标记对象,根据对象types,特殊的
creatordate和creator字段将与committer或tagger字段中的相应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 }'