是否可以将git commit date更改为一个太远的任意日期?

时间:2019-05-07 18:56:51

标签: git

我了解GIT_AUTHOR_DATEGIT_COMMITTER_DATE以及所有有助于我们更改git提交日期的方法,例如,我想通过以下命令更改上次提交日期:

GIT_COMMITTER_DATE="2019-01-01 22:01:02 +0000" git commit --amend --no-edit --date "2019-01-01 22:01:02 +0000"

因为我在一家国际公司工作,所以我需要以波斯(贾拉利)日期格式提交更改,因此我需要使用1398作为提交更改的年份(不是2019!),但是GIT似乎不接受日期太远了

1 个答案:

答案 0 :(得分:0)

Git与许多其他Unix程序一样,将日期存储为Unix时间戳,这是自1970年1月1日UTC午夜以来的秒数。所有这些时间戳都是使用公历指定的,并且由于Git仅用于解析公历中的时间戳,因此尝试提供年份1398不会具有您期望的行为:Git会认为您正在尝试提供公历1398年。其他任何工具,例如Git托管服务器,也会有同样的想法。

此外,在32位系统上,时间存储为32位整数,这意味着有效时间戳记的范围仅包含公历1902-2038 CE。如果您使用的是32位版本的Git,它甚至无法表达1398年(同样,它认为它是621年前)。如今,大多数Unix系统都是64位的,但是许多Windows用户仍在使用32位的软件,这可能就是为什么您的Git版本无法处理该日期的原因。

不幸的是,没有一种好的方法可以使Git产生非格雷戈输出或处理非格雷戈输入。它设计为以Unix的方式处理时间戳,这与公历紧密相关。有可能您可以在想要查看日期和时间的地方使用%x %X格式,并且在您的系统上可能会生成本地化的日历,但也可能不会。