Git:如何根据提交日期对标签进行排序



轻量级标签可以使用(基于此答案(根据相应提交的日期进行排序

git tag --sort=authordate

带注释的标签可以使用(基于这个答案(根据相应提交的日期进行排序

git tag --sort=*authordate

可以指定几个排序字段:

git tag --sort=authordate --sort=*authordate --format='[%(*authordate:iso)][%(authordate:iso)] %(refname:short)'

但是将所有轻量级标签分组在一起并且将所有注释标签分组在一起来因为CCD_ 1对于轻量级标签是空的并且CCD_。因此,我想我需要指定一个回退字段的可能性,如果另一个字段为空,则使用该字段而不是另一个域。git有这样的功能吗?(我在git tag --help中没有找到。(

如何根据相应提交的authordate对所有标记(注释标记和轻量级标记的混合(进行排序?

最快的方法可能是

git tag --format='%(objectname)^{}' 
| git cat-file --batch-check 
| awk '$2=="commit" { print $1 }' 
| git log --stdin --author-date-order --no-walk --decorate --oneline

因为标记不必指向提交,所以可以标记任何内容。指向标记的标记的*authordate也将为空,尽管它(通常(最终解析为提交。

有关^{}修订表达式语法,请参见git help revisions

最新更新