git commit的--date参数的格式是什么

yhived7q  于 2023-08-01  发布在  Git
关注(0)|答案(5)|浏览(114)

我需要覆盖Git的提交日期,所有的文档都指向--date参数,但是没有一个关于适当格式的线索。我试过了所有我能想到的排列,我得到:
“致命:无效的日期格式:“
每个人都有错误

xzlaal3s

xzlaal3s1#

Git 2.6+(Q3 2015)添加了一个新选项。
参见commit e4f031e(2015年6月30日)和commit aa1462ccommit a5481a6commit b7c1e11(2015年6月25日)by Jeff King ( peff )
(由Junio C Hamano -- gitster --合并至commit d939af1,2015年8月3日)

引入“格式化”日期模式

这将格式直接馈送到strftime
除了更灵活之外,主要的优点是您的系统strftime可以更多地了解您的语言环境的首选格式(例如,如何拼写一周中的每一天)。
--date=format:...将格式...提供给系统strftime
使用--date=format:%c以系统区域设置的首选格式显示日期。
有关格式占位符的完整列表,请参阅strftime手册。
Davide Cavestro在注解中提出了以下示例:

git commit -m "Test" --date=format:relative:5.hours.ago

字符串
原始答复(2014年年中)
--date选项(在2010年12月12日的commit 02b47cd中引入)2009,对于git1.7.0)使用与GIT_AUTHOR_DATE相同的格式,在commit 96b2d4f中测试了日期格式:
在那里,您可以看到接受的各种格式:

  • rfc2822:Mon, 3 Jul 2006 17:18:43 +0200
  • iso8601:2006-07-03 17:18:43 +0200
  • 本地:Mon Jul 3 15:18:43 2006
  • 短:2006-07-03(1.9.1中没有,在2.3.0中工作)
  • 相对:参见commit 34dc6e7
5.seconds.ago, 
2.years.3.months.ago, 
'6am yesterday'

内部原始git格式-自纪元以来的秒数加上时区
(put另一种方式:'date +"%s %z"'格式)

  • 默认值:Mon Jul 3 17:18:43 2006 +0200

ADTC在评论中提问和回答:
它接受2006-07-03 15:18:43为本地的吗?
是的,它确实工作,它自动采用当地时区。
使用这种格式,我不需要麻烦它是一周中的哪一天(SunMon等)。

szqfcxe2

szqfcxe22#

简单的例子:

GIT_AUTHOR_DATE='2015-04-19 17:18:43 +0200' GIT_COMMITTER_DATE='2015-04-19 17:18:43 +0200' git commit -m 'Commit message'

字符串

0aydgbwb

0aydgbwb3#

日期格式在Documentation/date-formats.txtman git commit)中没有详细说明,并且非常“人性化”地解析。
唯一起作用的是在date.c下阅读源代码并尝试一下。
VonC在2.3.0中未提及的要点:

  • 仅根据位数解析数字:
  • 2位数字:19 YY,表示YY >= 73,当前月、日、时间。否则为错误或当前日期。
  • 4位:YYYY,表示YYYY >= 1973,<= 2099
  • 8位数,最多达到一些小的限制(TODO哪个?):UNIX时间(自1970年以来的秒)

  • @<digits> +0000:UNIX时间。

这似乎是直接进入UNIX时代的最佳方式。
2**64 - 2(TODO为什么不-1?)是不会导致提交错误的最大值。印章存储在C长。
git log显示非常大的值(大约在2^55 TODO的某个位置,其中?)作为1970年,即使git cat-file -p HEAD显示存储了正确的数字,所以这似乎是日期转换的限制。
对于任何大于2**63 - 1的,最大的正符号long,尝试推送到GitHub会失败date causes integer overflowA commit at that date on GitHub(GitHub cannot show really large dates for some reason
VonC指出,这是一个耻辱,因为它阻止了可以用来将旧软件迁移到Git的负日期Is it possible to set a git commit to have a timestamp prior to 1970?

  • tea:今天17点:-)
vvppvyoh

vvppvyoh4#

下面的缩写形式都适用:
1.第一个月

  1. <month>-<day>
  2. <day>.<month>
    当没有歧义时,即<day>大于12<month><day>的顺序无关紧要,分隔符可以是“/”、“-”或“.”中的任何一个。
    否则,请使用'.'作为<day>.<month>的分隔符,使用'/'或'-'作为<month>-<day>
    因此,“1.7”将被视为“July 1”,“1/7”将被视为“January 7”。
    参见the related commit from v1.3.0
    我们从#git频道上的欧洲朋友那里了解到dd.mm.yyyy是那里的常态。
    当分隔符是'.'时,我们更喜欢dd.mm.yyyy而不是mm.dd.yyyy;否则mm/dd/yy[yy]优先于dd/mm/yy[yy]。
    这也适用于接受日期输入的其他命令,例如:显示自2月4日以来的日志:
git log --since 2/4

字符串

avkwfej4

avkwfej45#

你可以这样写:“yesterday”、“2 days ago”或“one week ago”,或者你可以用破折号输入一个具体的日期。您可以按常规顺序执行此操作。例如,2023年6月19日。

相关问题