Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在提交中忽略提交时区信息?_Git_Date_Timezone - Fatal编程技术网

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

Git 如何在提交中忽略提交时区信息?,git,date,timezone,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 &l

最近,我找到了一个由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 ...
:

2013-11-07 02:31:41+0545提交时,git存储Unix时间戳(自1970年1月1日UTC起的秒数)和提交者的本地偏移量。可以替代偏移,但也必须提供日期

git commit --date 1401179025 -0700
支持多种格式。我更喜欢ISO-8601格式,如下所示:

git commit --date 2014-05-27T01:23:45-07:00
可以随意设置偏移量。使用0表示UTC。我个人认为这是没有必要的。它实际上减少了日志中的信息量。你可能只关心确切的时间,但也许你也会关心那个特定提交人的时间。例如,你可能想知道那个人是在凌晨还是深夜犯下的。如果不存储本地偏移量,则该信息将丢失,并且存储该信息不会有任何影响

如果您的主要关注点是查看Git日志不将所有提交对齐到单个时区,请考虑使用<代码> -DATE < /Cord>选项调整日志输出:

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


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

您可以使用此命令在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委员会

有关更详细的解释,请参阅

为什么提交需要提交者的时区?它是用来干什么的?UTC时间不够吗

时区对于计算执行操作的作者/提交人的本地时间很有用

根据:

Git内部格式
是的,在哪里
自UNIX纪元以来的秒数。是一个
与UTC的正偏移或负偏移。例如CET(1小时)
在UTC之前)为+0100。

#1是离题的,但“有时它很有用”。对于#2,为特定命令设置时区,例如
TZ=UTC git commit
@jthill-这可能会设置
TZ
环境变量,但这不是为特定命令设置时区的跨平台方法。Git也在Windows上运行,你知道。@MattJohnson嗯,它在Git for Windows(又名msysgit)上运行,适用于
Git
gitk
date
ls
,我对其他的一切都毫无疑问。主题是git,并且建议的方法适用于整个git工具箱,我看不出您可以引用什么。你能说得更具体些吗?@jthill-Windows不使用
TZ
env变量。您谈论的是bash或cygwin或类似命令,而不是特定于git的参数。我个人使用GitHub for windows,它为msysgit启动了一个powershell窗口。
TZ
var在那里不起作用,您当然不能在powershell中以这种方式提供特定于命令的环境var设置。只是说,OP要求的是特定于git的答案,在你的建议不起作用的情况下,有很多方法可以运行git。@MattJohnson git for Windows肯定使用TZ。GitHub for Windows不是Git。如果它不能做到这一点,那就是它的问题,而不是git的问题。GitHub for Windows可能不是跨平台的,但幸运的是Git是跨平台的。这值得使用Git请求几个bug。@Michael-O-也许可以添加一个选项
--date=utc
,但您还想做什么?可以做几件事。首先,Git的ISO格式不是ISO一致的,这需要修正
--date=iso
可以保持原样并保留原始时区
--date=iso local
应将所有时间戳标准化为本地时区,并省略偏移量,
--date=iso utc
应标准化为utc,并添加一个
Z
以表示utc时区。那太好了。@Michael-O date==iso local(很快)成为现实:提交有两个时间戳,“作者日期”和“提交日期”。这个答案设置作者日期的时区,但不设置提交日期(使用git log--pretty=fuller检查)。设置TZ环境变量可设置两者的时区。对于mac OS,请使用
git config--global alias.commitutc'!git commit--date=“$(日期-u+%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 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.