我需要覆盖Git提交的日期,所有文档都指向--date
参数,但是没有一个让人了解适当格式的线索。我已经尝试了我能想到的每种排列方式,但我得到了:
"fatal: invalid date format:"
每一个都出现错误。
我需要覆盖Git提交的日期,所有文档都指向--date
参数,但是没有一个让人了解适当格式的线索。我已经尝试了我能想到的每种排列方式,但我得到了:
"fatal: invalid date format:"
每一个都出现错误。
Git 2.6+(2015年第三季度)新增了一个选项。
请查看提交 e4f031e(2015年6月30日),以及提交 aa1462c,提交 a5481a6,提交 b7c1e11(2015年6月25日),作者为Jeff King (peff
)。
(由Junio C Hamano -- gitster
--合并于提交 d939af1,2015年8月3日)
git commit -m "Test" --date=format:relative:5.hours.ago
原始回答(2014 年中旬)
--date
选项(在 git1.7.0 中引入,commit 02b47cd,时间为 2009 年 12 月)使用与 GIT_AUTHOR_DATE
相同的格式,并测试了 commit 96b2d4f 中的日期格式:
您可以在那里看到接受的各种格式:
Mon, 3 Jul 2006 17:18:43 +0200
2006-07-03 17:18:43 +0200
Mon Jul 3 15:18:43 2006
2006-07-03
(not in 1.9.1, works in 2.3.0)relative: see commit 34dc6e7:
5.seconds.ago,
2.years.3.months.ago,
'6am yesterday'
raw: see commit 7dff9b3 (git 1.6.2, March 2009)
internal raw git format - seconds since epoch plus timezone
(put another way: 'date +"%s %z"
' format)
Mon Jul 3 17:18:43 2006 +0200
ADTC在评论区提问并回答:
本地时间格式是否接受2006-07-03 15:18:43?
是的,它可以工作,并自动采用本地时区。
使用这种格式,我不需要关心是星期几(Sun
,Mon
等)。
2006-07-03 15:18:43
作为本地时间?此外,什么是相对时间和原始时间格式? - ADTCgit commit -m "Test" --date=format:relative:5.hours.ago
。 - Davide Cavestro简单的例子:
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'
man git commit
)中文档不够详细,而且解析方式非常“人性化”。唯一有效的方法是阅读date.c源代码并进行试验。@<digits> +0000
:UNIX时间
- 这似乎是直接输入UNIX时间的最佳方式。
- 2 ** 64-2(TODO为什么不是-1?)是不会导致提交错误的最大值。时间戳存储在C long中。
- git log
显示非常大的值(大约在2 ^ 55
TODO哪里?)为1970年,即使git cat-file -p HEAD
显示存储了正确的数字,因此似乎是日期转换的限制。
- 对于大于2 ** 63-1
(最大正有符号长整型)的任何值,尝试推送到GitHub都会失败,并显示“date causes integer overflow”。在该日期提交到GitHub(GitHub 由于某种原因无法显示非常大的日期)
- VonC指出这是一个遗憾,因为它阻止了负日期(是否可以将Git提交设置为具有1970年之前的时间戳?),这可以用于将旧软件迁移到Git。
- tea
:今天下午5点 :-)
<month>/<day>
<month>-<day>
<day>.<month>
<day>
大于12
,<month>
<day>
的顺序无关紧要,分隔符可以是任何一个'/
'、'-
'或'.
'。<day>.<month>
,使用'.
'作为分隔符,对于<month>-<day>
,使用'/
'或'-
'作为分隔符。1.7
"将被视为"7月1日",而"1/7
"将被视为"1月7日"。git log --since 2/4