列出所有带注释的标签,带注释,按提交日期排序

nau*_*101 1 git git-log git-tag

列出带有注释的所有标签似乎很容易,例如:

git tag -n99
Run Code Online (Sandbox Code Playgroud)

或者

git for-each-ref --format '%(refname:short) %(contents)' refs/tags
Run Code Online (Sandbox Code Playgroud)

也可以用于git log按创建者日期列出标签,例如(来自此处):

git log --tags --simplify-by-decoration --pretty="format:%cs %d"
Run Code Online (Sandbox Code Playgroud)

然而,这些都没有回答问题,因为据我所知:

  • 无法按提交日期对带注释的标签进行排序git tag,因为标签指向标签注释对象,因此committerdate为空。您可以通过以下方式确认这一点git tag --format='%(committerdate)'
    • 有一个,它列出了未注释提交的creatordate提交日期,以及带注释提交的标签创建日期,这对于这个问题来说也是无用的。
  • 无法使用 来显示标签注释git log,因为格式化程序中没有标签注释选项(而且这无论如何都没有意义,因为单个提交可以有多个标签。

那么,有没有一种方法可以列出所有标签,按提交日期排序,并显示提交日期和注释?我不关心这个问题的未注释标签。

Elp*_*Kay 7

答案在文档中

如果 fieldname 以星号 (*) 为前缀并且 ref 指向标记对象,则使用标记对象引用的对象中的字段值(而不是标记对象中的字段)。

要显示提交者日期,请使用%(*committerdate)。例如,

git for-each-ref refs/tags --format="%(*committerdate:iso) %(contents:subject) %(refname:short)" --sort=*committerdate
Run Code Online (Sandbox Code Playgroud)

要反转结果,请使用--sort=-*committerdate相反。它也很容易使用sortsort -r