我需要覆盖提交git的日期,所有文档都指向--date参数,但是然后留下一个没有线索的适当格式。我已经尝试了我能想到的每一个排列,并且我得到了“致命的:无效的日期格式:”每个人的错误。
答案 0 :(得分:62)
Git 2.6 +(2015年第3季度)添加了新选项。
见commit e4f031e(2015年6月30日)和commit aa1462c,commit a5481a6,commit b7c1e11(2015年6月25日)Jeff King (peff
)。
(由Junio C Hamano -- gitster
--合并于commit d939af1,2015年8月3日)
介绍“格式”日期模式
这会直接将格式提供给
strftime
除了更灵活一点,主要优点是你的系统strftime
可能会更多地了解您的语言区域的首选格式(例如,如何拼写星期几)。
--date=format:...
将格式...
提供给您的系统strftime
使用--date=format:%c
以系统区域设置的首选格式显示日期 有关格式占位符的完整列表,请参阅strftime
手册。
Davide Cavestro建议in the comments示例:
git commit -m "Test" --date=format:relative:5.hours.ago
原始答案(2014年中)
--date
选项(在2009年12月的commit 02b47cd中为git1.7.0引入)使用与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
(不在1.9.1中,在2.3.0中有效)亲戚:见commit 34dc6e7:
5.seconds.ago,
2.years.3.months.ago,
'6am yesterday'
raw:见commit 7dff9b3(git 1。6。2,2009年3月)
内部原始git格式 - 自纪元加时区后的秒数
(换句话说:'date +"%s %z"
'格式)
Mon Jul 3 17:18:43 2006 +0200
ADTC询问并回答in the comments:
它是否接受2006-07-03 15:18:43本地?
是的确有效,它会自动占用当地时区 使用这种格式,我不需要打扰一周中的哪一天(
Sun
,Mon
等。)
答案 1 :(得分:8)
日期格式未记录在Documentation/date-formats.txt(man git commit
),而且非常" humanishely"解析。
唯一有效的方法是阅读date.c下的来源并尝试一下。
VonC在2.3.0上未提及的要点:
仅根据位数解析数字:
2位数:19YY,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 overflow
。 A commit at that date on GitHub(GitHub cannot show really large dates for some reason)
VonC指出,这是一个耻辱,因为它阻止负日期Is it possible to set a git commit to have a timestamp prior to 1970?,可用于将旧软件迁移到Git。
tea
:今天17点: - )
答案 2 :(得分:1)
下面的缩写形式都可以使用:
<month>/<day>
<month>-<day>
<day>.<month>
如果没有歧义,即<day>
大于12
,则<month>
<day>
的顺序无关紧要,并且分隔符可以是'{ {1}},“ /
”或“ -
”。
否则,请使用'.
'作为.
的分隔符,并使用'{{11}}'或'<day>.<month>
'作为/
的分隔符。
因此“ -
”将被视为“ 7月1日”,“ <month>-<day>
”将被视为“ 1月7日”。
请参见the related commit from v1.3.0:
When the separator is '.', we prefer dd.mm.yyyy over mm.dd.yyyy; otherwise mm/dd/yy[yy] takes precedence over dd/mm/yy[yy].
这也适用于接受日期输入的其他命令,例如:从2月4日开始显示日志:
1.7
答案 3 :(得分:0)
简单的例子:
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'