我如何在创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 }'