获取git标签的时间和日期

HNy*_*ard 73 git time date git-tag

我有一个使用git的项目,并使用标记标记了所有版本.

$ git tag
v1.0.0
v1.0.1
v1.0.2
v1.0.3
v1.1.0
Run Code Online (Sandbox Code Playgroud)

我的目标是在Web界面中列出发布和发布日期(标记/提交日期=发布日期).目前我们使用列出所有版本git tag.

如何获得标签制作时(或指向的提交)的时间和日期?

Nik*_* C. 70

这总对我有用:

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

如果您想要不同的日期格式,请参阅git-log联机帮助页的"PRETTY FORMATS"部分以获取格式字符串的详细信息.

  • 但是要注意,这将列出提交的日期/时间,但不会列出带注释标签的日期/时间. (11认同)
  • 只需在.gitconfig的[alias]部分中放入`taglog = log --tags --simplify-by-decoration --pretty ='format:%ci%d'`(注意单引号,而不是双引号)文件,现在您有了git taglog命令:) (3认同)
  • ...我喜欢 (2认同)

use*_*342 59

使用--format参数git log:

git log -1 --format=%ai MY_TAG_NAME
Run Code Online (Sandbox Code Playgroud)

  • 此答案打印标记提交的作者日期,而不是创建标记的日期。 (5认同)
  • 如果你想要ISO8601,请执行`--format =%aI`(大写"I") (4认同)
  • 提示 - 将"TAG"替换为标签名称.例如,`git log -1 --format =%ai v0.2.3`. (3认同)

小智 25

请注意,上述两种解决方案都会为您提供提交日期,这可能与提交标记为发布时的提交日期大不相同.要获取标记本身的日期,您必须找到标记本身rev-parse,阅读它cat-file,然后解析它.一点管道:

git rev-parse v1.0.0 | xargs git cat-file -p | egrep '^tagger' | cut -f2 -d '>'


non*_*tor 25

还有一个选择:

git for-each-ref --format="%(refname:short) | %(creatordate)" refs/tags/*
Run Code Online (Sandbox Code Playgroud)

有关格式选项,请参阅https://git-scm.com/docs/git-for-each-ref#_field_names

%(creatordate) 给出指向的提交日期,以查看在使用时创建标记的日期 %(taggerdate)

您可以直接合并shell:

$> git for-each-ref --shell --format="ref=%(refname:short) dt=%(taggerdate:format:%s)" refs/tags/*

ref='v1.10' dt='1483807817'
ref='v1.11' dt='1483905854'
ref='v1.12.0' dt='1483974797'
ref='v1.12.1' dt='1484015966'
ref='v1.13' dt='1484766542'
ref='v1.2' dt='1483414377'
ref='v1.3' dt='1483415058'
ref='v1.3-release' dt='' <-- not an annotated tag, just a pointer to a commit so no 'taggerdate', it would have a 'creator date'.
ref='v1.3.1' dt='1483487085'
ref='v1.4' dt='1483730146'
ref='v1.9' dt='1483802985'
Run Code Online (Sandbox Code Playgroud)

  • 相同的结果,但输入较少: `git tag --format "%(refname:short) %(creatordate:short)"` (4认同)
  • 谢谢你!所有其他答案只给出提交日期而不是标记日期。 (3认同)
  • 这是获取标签日期的最佳答案. (2认同)