如何在提交中忽略提交时区信息?

时间:2014-05-26 16:18:52

标签: git date timezone

最近,我分叉了一个由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的服务器中。

所以我的问题:

  1. 为什么提交需要提交者的时区?它是干什么用的?还没有足够的UTC时间吗?
  2. 提交时是否有任何选项可以忽略我的计算机的时区设置?我不想将我的计算机的时区设置为UTC,只是因为git隐式提交它。

3 个答案:

答案 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.