最近,我分叉了一个由github托管的存储库,贡献者遍布全世界,并发现每个提交日志都包含提交者的时区信息。
2013-11-07 02:31:41 +0545 <-- This committer is living in Nepal. Surely.
2013-11-04 12:58:36 -0600 <-- This committer is living in CST or Ecuador or Chili or ...
2013-10-31 10:36:36 +0700 <-- This committer is living in Indonesia or Thai or Mongolia or Laos or Australia or ...
:
我知道可以通过编辑输出表单来隐藏它(例如git: timezone and timestamp format),但这隐藏了实际保存在github存储库中的内容,仅限于我的眼睛。每个提交者的时区肯定都保存在github的服务器中。
所以我的问题:
答案 0 :(得分:10)
您可以使用此命令以UTC时间提交:
git commit --date="`date --utc +%Y-%m-%dT%H:%M:%S%z`"
您也可以将其别名设为一个方便的名称:
git config --global alias.commitutc '!git commit --date="$(date --utc +%Y-%m-%dT%H:%M:%S%z)"'
做git commitutc
。
有关更详细的说明,请查看this blog post。
答案 1 :(得分:4)
提交时,git存储Unix时间戳(1970年1月1日以来的秒数)以及提交者的本地偏移量。您可以覆盖偏移量,但您也必须提供日期。
git commit --date 1401179025 -0700
支持多种格式as documented here。我更喜欢ISO-8601格式,如下所示:
git commit --date 2014-05-27T01:23:45-07:00
您可以根据需要设置偏移量。对UTC使用零。就个人而言,我认为这是不必要的。它实际上减少了日志中的信息量。您可能只关心确切的时刻,但也许人们也可能关心那个特定提交者的时间。例如,也许您想知道该人是早上或深夜犯下的。如果您不存储本地偏移量,那么该信息就会丢失,存储它并不会造成伤害。
如果您主要关注的是查看git日志并未将所有提交与单个时区对齐,请考虑使用--date
选项on the log command调整日志输出:
git log --date=local
以上使用提交偏移量将提交日期调整为您自己的本地时区。
我没有看到任何可以直接将其调整为UTC的内容,但您可以将自己的时区设置为UTC,然后使用此命令。
答案 2 :(得分:0)
为什么提交需要提交者的时区?这有什么用途? UTC时间不够吗?
时区有助于确定执行操作的作者/提交者的本地时间。
根据https://git-scm.com/docs/git-commit-tree#_date_formats:
Git internal format
It is <unix timestamp> <time zone offset>, where <unix timestamp> is
the number of seconds since the UNIX epoch. <time zone offset> is a
positive or negative offset from UTC. For example CET (which is 1 hour
ahead of UTC) is +0100.