【问题标题】:How to list git tags with the dates of the original commits如何列出带有原始提交日期的 git 标签
【发布时间】:2018-08-13 21:14:52
【问题描述】:

我想列出 git 标签以及它们指向的提交的日期(不是创建标签的日期)。我还想按原始提交的日期以相反的顺序对它们进行排序。

例如,我在 Aug 1Aug 3Aug 5 上创建了 3 个提交。 稍后我创建了 3 个指向这些提交的标签。所有标签都是在Aug 10 创建的,所以它们都有相同的日期。

我想要以下内容(按提交日期倒序排序):

tag-1.2     Aug 5       
tag-1.1     Aug 3       
tag-1.0     Aug 1       

我尝试使用committerdate,但它似乎是空的,并且提交没有排序:

git for-each-ref --sort=-committerdate --format "%(tag) %(committerdate)" refs/tags

tag-1.0     
tag-1.1     
tag-1.2     

taggerdate 有效,但它是创建标签的日期,而不是原始提交:

git for-each-ref --sort=-taggerdate --format "%(tag) %(taggerdate)" refs/tags

tag-1.2     Aug 10      
tag-1.1     Aug 10      
tag-1.0     Aug 10      

【问题讨论】:

  • 我试图重现您的第二次尝试(使用 committerdate),但奇怪的是我根本没有相同的输出。按提交日期排序很好,但标签名称不显示。我很想知道为什么。感谢您提出有趣的问题。
  • 你确定你的语法吗? --sort=-committerdate 不应该是 --sort=committerdate 吗? (没有破折号)在format 之后不是等号而不是空格吗?

标签: git


【解决方案1】:

那不是example mentioned in git for-each-ref,使用'*'符号吗?

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

显示最近的 3 个标记提交:

vonc@voncav:/mnt/d/git/git$ 

git for-each-ref --count=3 --sort='-*authordate' --format='%(*authordate) %(*refname)'

Thu Jun 21 10:00:06 2018 -0700 refs/tags/v2.18.0^{}
Wed Jun 13 12:57:07 2018 -0700 refs/tags/v2.18.0-rc2^{}
Mon Jun 4 21:41:41 2018 +0900 refs/tags/v2.18.0-rc1^{}

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 2022-06-28
    • 2011-05-31
    • 2015-08-22
    • 1970-01-01
    • 2011-04-18
    • 2019-04-04
    • 2011-12-16
    相关资源
    最近更新 更多