我正在尝试打印带有UTC / UNIX纪元秒时间戳,提交时区和短哈希的git日志。
我注意到https://git-scm.com/docs/git-log/2.17.1:
%ad:作者日期(格式方面--date =选项)
%at:作者日期,UNIX时间戳
- -date = raw将日期显示为从纪元(1970-01-01 00:00:00 UTC)起的秒数,后跟一个空格,然后将时区显示为与UTC的偏移量(a +或-四位数;前两个是小时,后两个是分钟)。也就是说,好像时间戳记是用
strftime("%s %z")
格式化的。请注意,-local选项不会影响seconds-since-epoch值(始终以UTC度量),但是会切换随附的时区值。
所以,我天真地尝试了这一点:
$ git --no-pager log --reverse --pretty='%at %z %h'
1528917616 %z 1cabbe9
1528960200 %z 3fad300
1528964789 %z ba4e746
1528964798 %z d39a4f8
...
很明显,%z
不在git log --pretty
/ --format
中展开。
然后,出于某种偶然,我尝试了此操作:
$ git --no-pager log --reverse --date=raw --pretty='%ad %h'
1528917616 +0000 1cabbe9
1528960200 +0000 3fad300
1528964789 +0000 ba4e746
1528964798 +0000 d39a4f8
1528967981 +0000 a9cdecb
1528970465 +0000 3e9cee9
....
...而这正是我想要的!除此以外,这里没有用于时区的单独格式参数,因此如果需要,我无法将其移到其他地方,至少不能直接在git log
命令中。
那么,有谁知道我是否可以在git log
中直接使用格式说明符,并且该格式说明符只能为我提供提交时间戳的时区?
答案 0 :(得分:1)
在git log
中,--pretty
(或--format
)没有时区的占位符。但是--date=format:
确实如此。看来--date=raw
等效于--date=format:"%s %z"
。因此,如果您只想要特定提交的时区,则可以尝试:
git log -1 <commit> --pretty=%ad --date=format:%z
请注意,%ad
是作者日期。如果要提交日期,请改用%cd
。此外,预定义的日期格式有多个占位符,例如%ai
,%at
,%cD
等。如果使用了这些占位符,则--date=format
将被忽略。 / p>