git - 在格式良好的 git 日志输出(格式说明符)中检索时区?
问题描述
我正在尝试打印带有 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 的偏移量(带四位数字的 + 或 -;前两个是小时,后两个是分钟)。即,好像时间戳是用
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
...
显然, git log /%z
不会扩展。--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
它只会让我获得提交时间戳的时区?
解决方案
在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
被忽略。
推荐阅读
- javascript - 反应本机参考子失败错误
- c# - 未授权用户的 Blazor 登录页面
- python - python pandas数据框不输出
- python - 进度条 100% 完成后如何显示 jinja2 模板
- c++ - CUDA中的线程和块结构以及如何分配具有不同结构的线程(c ++)
- python - 使用 Python 2.7 创建和使用 virtualenv 而不添加到“路径”
- excel - 如何在 Excel 中使用 INDIRECT 函数
- php - 使用非 ASCII 内容类型从 php 发送加密邮件
- css - webkit-backdrop-filter 在 React.js 中不起作用
- typescript - 如何正确键入带有属性对象条件的 typescript 对象