git 标签的 taggerdate 和 creatordate 有什么区别

What is the difference between taggerdate and creatordate for git tags

listing info for git tags 的文档中,有 taggerdatecreatordate 的字段。这两者有什么区别?哪个表示tag创建的时间(注解到对应的commit)?

一个标签对象有一个tagger字段。 提交对象 有两个字段,committerauthor。当 ref 是一个标签时(例如 refs/tags/v1.2),它通常会引用:

  • 直接提交(这样这个标签就是*轻量级标签),或者
  • 到一个标签对象,该标签对象又引用一个提交(因此这个标签是一个带注释的标签)。

标签可能直接或间接引用树或 blob,但这些不是这里有趣的情况。

使用 %(creatordate)%(creator) 将从 committer 字段获取值,如果标签是轻量级标签,因此没有 tagger 字段,但如果标签是注释标签,将使用 tagger 字段。

使用 %(taggerdate) 仅抓取标记器日期字段。使用 %(tagger) 仅抓取标记器名称和电子邮件字段。如果标签是轻量级的,因此没有这样的字段,这些字段将展开为空(空字符串)。

Which one indicates the time when the tag was created (annotated to the corresponding commit)?

只有带注释的标签才有这样的数据;如果标记被注释,%(taggerdate)%(creatordate) 都将获得它。如果标签没有注释,使用你想要的任何一个来获取提交者日期,或者什么都没有。