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

Izu*_*ima 16 git timezone date

最近,我分叉了一个由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 ...
:
Run Code Online (Sandbox Code Playgroud)

我知道可以通过编辑输出格式(例如git:timezone和timestamp格式)来隐藏它,但是这隐藏了github存储库中实际保存的内容,仅限于我的眼睛.每个提交者的时区肯定都保存在github的服务器中.

所以我的问题:

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

Sae*_*ini 10

您可以使用此命令以UTC时间提交:

git commit --date="`date --utc +%Y-%m-%dT%H:%M:%S%z`"
Run Code Online (Sandbox Code Playgroud)

您也可以将其别名为一个方便的名称:

git config --global alias.commitutc '!git commit --date="$(date --utc +%Y-%m-%dT%H:%M:%S%z)"'
Run Code Online (Sandbox Code Playgroud)

并做git commitutc.

有关更详细的说明,请查看此博客文章.

  • 提交有两个时间戳,"作者日期"和"提交日期".此答案设置作者日期的时区,但不设置提交日期(使用`git log --pretty = fuller`检查).设置TZ环境变量[如jthill建议](/sf/ask/1671194591/#comment36750060_23874208)设置两者的时区. (5认同)

Mat*_*int 7

提交时,git 存储 Unix 时间戳(自 1/1/1970 UTC 以来的秒数)和提交者的本地偏移量。您可以覆盖偏移量,但也必须提供日期。

git commit --date 1401179025 -0700
Run Code Online (Sandbox Code Playgroud)

支持多种格式,如此处所述。我更喜欢 ISO-8601 格式,它是这样的:

git commit --date 2014-05-27T01:23:45-07:00
Run Code Online (Sandbox Code Playgroud)

您可以随意设置偏移量。UTC 使用零。个人认为这是不必要的。它实际上减少了日志中的信息量。你可能只关心确切的时间,但也许人们也可能关心那个特定提交者的时间。例如,也许您想知道那个人是在清晨还是在深夜犯罪。如果您不存储本地偏移量,那么该信息就会丢失,存储它也无妨。

如果您主要担心查看 git 日志并没有将所有提交与单个时区对齐,请考虑使用log 命令上的--date选项调整日志输出:

git log --date=local
Run Code Online (Sandbox Code Playgroud)

以上使用提交偏移量将提交日期调整为您自己的本地时区。

我没有看到任何可以直接将其调整为 UTC 的内容,但是您可以将自己的时区设置为 UTC,然后使用此命令。

  • 这值得用 Git 提出几个错误请求。 (2认同)
  • @Michael-O - 也许可以添加 `--date=utc` 作为选项,但你还有什么想法? (2认同)
  • 有几件事可以做。首先,Git 的 ISO 格式不符合 ISO,需要修复。`--date=iso` 可以保持原样并保留原始时区。`--date=iso-local` 应该将所有时间戳标准化为本地时区并省略偏移量,`--date=iso-utc` 应该标准化为 UTC 并添加一个 `Z` 来表示 UTC 时区。那将是完美的。 (2认同)