Git提交时是否记录本地时区(而非仅UTC偏移量)?
Git提交是否保存本地时区信息?
结论确认
Git 仅保存Unix时间戳和UTC偏移量,不会存储本地时区ID(如Europe/Copenhagen)或时区缩写(如CET/CEST)这类信息。
原因说明
Git的提交对象中,作者(author)和提交者(committer)字段的存储格式为:
name <email> timestamp offset
其中offset是UTC偏移量(例如+0100),没有额外字段记录本地时区的具体标识。这就是为什么你使用strftime的%Z格式符时没有输出——Git根本没保存这个数据。
同一个UTC偏移量可能对应多个时区(比如+0100覆盖欧洲中部时间CET、西非时间WAT等),Git无法仅凭偏移量反推出提交时的原始时区。
针对你场景的验证说明
以你的Ubuntu 20.04环境为例:
- 系统
timedatectl和date命令能显示CET/CEST,是因为系统本身维护了当前时区设置,但这个信息不会被Git写入提交对象。 git log --date=raw显示时间戳和偏移量,完全符合Git提交的存储内容;--date=human不显示时区缩写,同样是因为Git没有相关数据可展示。
获取提交本地时区的可行方法
由于Git本身不存储该信息,只能通过间接方式处理:
- 手动在提交信息中添加时区标注:提交时在说明末尾加上类似
Timezone: CET或Timezone: Europe/Copenhagen的内容,后续可通过git log --grep="Timezone:"提取对应信息。 - 针对自身提交的本地映射:如果你是提交者且本地时区未变更,可利用提交时间戳结合自己的系统时区设置,反推提交时的时区缩写,但此方法仅适用于你自己的提交,对他人提交无效。
内容的提问来源于stack exchange,提问作者sdbbs
相关产品推荐
相关产品推荐

