Git:以UTC显示日期

Ada*_*tan 11 git metadata utc

以下命令以json格式显示有关上一次git提交的一些元数据:

git show --quiet HEAD --pretty=format:"{\"hash\":\"%h\", \"author\":\"%cn\", \"commit date\":\"%cd\"}"

{
  "hash":"0fc0fc0", 
  "author":"Adam Matan",
  "commit date":"Sun Jan 26 12:26:19 2014 +0200"}
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在UTC/GMT时区中显示日期,例如"Sun Jan 26 10:26:19 2014"

rob*_*nst 14

你可以用这个:

TZ=UTC git show --quiet --date=local --format="%cd"
Run Code Online (Sandbox Code Playgroud)

如果要控制日期格式,可以执行以下操作:

TZ=UTC git show --quiet --date='format-local:%Y%m%dT%H%M%SZ' --format="%cd"
Run Code Online (Sandbox Code Playgroud)

  • 如果您对 git 的 ISO 格式(较短的格式字符串)感到满意,还可以使用 `TZ=UTC git show --quiet --date=iso-local`。 (3认同)
  • @dolmen 将 `TZ` 设置为 `UTC` 甚至不符合 POSIX 标准;Windows [确实识别 `TZ` 变量](https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset),但应该将其设置为 POSIX 规定的值 ` UTC0`。(我假设你指的是这个问题,而不是 Windows 中的“cmd.exe”不支持局部变量赋值,因为“sh”和“cmd.exe”之间的可移植性基本上是不可能的。) (2认同)

Von*_*onC 4

我在日志数据格式中没有看到 utc 格式(列出了这个答案)。

我从你的格式中得到的最接近的是:

git config log.date local

C:\Users\VonC\prog\git\git\>git show --quiet HEAD --pretty=format:"{\"hash\":\"%h\", \"author\":\"%cn\", \"commit date\":\"%cd\"}"
{"hash":"b594c97", "author":"Junio C Hamano", "commit date":"Thu Jan 23 10:00:28 2014 -0800"}

C:\Users\VonC\prog\git\git\>git config log.date local

C:\Users\VonC\prog\git\git\Documentation\technical>git show --quiet HEAD --pretty=format:"{\"hash\":\"%h\", \"author\":\"%cn\", \"commit date\":\"%cd\"}"
{"hash":"b594c97", "author":"Junio C Hamano", "commit date":"Thu Jan 23 19:00:28 2014"}
Run Code Online (Sandbox Code Playgroud)

所以从 iso 来看:

"Thu Jan 23 10:00:28 2014 -0800"
Run Code Online (Sandbox Code Playgroud)

至本地:

"Thu Jan 23 19:00:28 2014"
Run Code Online (Sandbox Code Playgroud)

正如评论所述,这不是UTC,除非您的计算机本地时间已经是 UTC。


这在邮件列表上进行了讨论:

添加user.hideTimezone用于设置 UTC 时区

默认情况下,创作和共享提交会公开用户的时区。

" commit --date=YYYY-MM-DDThh:mm:ss+0000" 足以将作者时间放入 UTC,但不能将提交时间放入 UTC。
但用户根本不必传递标志。

Git 应该完全停止访问、记录和共享用户的时区,句号。

如果做不到这一点,git 默认情况下应该停止访问、记录和共享用户的时区,但如果单个用户希望在提交时保留自己的时区,他们可以选择加入。

Git 维护者 Junio C. Hamano 回答道:

你可以自由奔跑

$ TZ=GMT git commit
Run Code Online (Sandbox Code Playgroud)

如果您想选择退出该功能,但从第一天起这就是默认设置,人们希望 Git 也能这样做。

还:

现在,使用--dategit commit 上的参数还可以传递时区:

git commit --date="$(TZ=PST date)"
Run Code Online (Sandbox Code Playgroud)

该补丁(用于添加 user.hideTimezone)尚未完全开发。