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"部分以获取格式字符串的详细信息.
use*_*342 59
使用--format参数git log:
git log -1 --format=%ai MY_TAG_NAME
Run Code Online (Sandbox Code Playgroud)
小智 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)