git commit的–date参数的格式是什么?
我需要覆盖git的提交date,所有的文档指向–date参数,但是留下一个没有线索的适当的格式。 我已经尝试了所有我能想到的排列方式,而且每个人都会遇到“致命的:无效的date格式:”错误。
Git 2.6+(2015年第三季度)添加一个新选项。
请参阅提交e4f031e (2015年6月30日),并提交 Jeff King( peff
) 提交的aa1462c , 提交a5481a6 , 提交b7c1e11 (2015年6月25日) 。
(由Junio C gitster
合并- gitster
– in commit d939af1 ,2015年8月3日)
引入“格式”date模式
这直接将格式提供给
strftime
。
除了更加灵活一些之外,主要优势在于你的系统strftime
可以更多的了解你的语言环境的首选格式(例如,如何拼写星期几)。
--date=format:...
将格式传给你的系统strftime
。
使用--date=format:%c
以系统区域设置的首选格式显示date。
有关格式占位符的完整列表,请参阅strftime
手册。
原始答案(2014年中)
--date
选项(2009年12月的提交02b47cd引入,git1.7.0)使用与GIT_AUTHOR_DATE相同的格式,在提交96b2d4f中testing了date格式:
在那里你可以看到接受的各种格式:
-
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中工作) -
相对:见提交34dc6e7 :
5.seconds.ago, 2.years.3.months.ago, '6am yesterday'
-
原始的:参见commit 7dff9b3 (git 1.6.2,2009年3月)
内部原始git格式 – 从时代加时区开始的秒数
(换句话说:'date +"%s %z"
'''格式) - 默认:
Mon Jul 3 17:18:43 2006 +0200
ADTC 在评论中询问和回答:
它接受2006-07-03 15:18:43为地方?
是的,它工作,它会自动采取当地时区。
用这种格式,我不需要打扰星期几(Sun
,Mon
等)。
date格式在Documentation / date-formats.txt ( man git commit
)没有logging,并且非常“人性化”地被parsing。
唯一可行的是读取date.c下的源文件并尝试。
VonC在2.3.0中未提及的要点:
-
数字只能根据位数来parsing:
-
2位:19YY,YY> = 73,当前月份,date和时间。 错误或当前date,否则。
-
4位数字:YYYY,YYYY> = 1973,<= 2099
-
> 8个数字到一些小的限制(TODO哪个?):UNIX时间(自1970年以来的秒数)
-
-
@<digits> +0000
:UNIX时间。这似乎是直接inputUNIX时间的最佳方法。
2 ** 64 – 2(TODO为什么不是-1?)是不会导致提交错误的最大值。 邮票存放在C长。
git log
在1970年显示非常大的值(大约2^55
TODO在哪里?),尽pipegit cat-file -p HEAD
显示存储了正确的数字,所以它似乎是date转换的限制。对于大于
2**63 - 1
任何事情,最大的正数签名为long,试图推送到GitHub失败,并date causes integer overflow
。 在GitHub (GitHub 由于某种原因无法显示真正的大date ) 提交,VonC指出,这是一个耻辱,因为它阻止否定date是否有可能设置一个git提交具有1970年之前的时间戳? 可以用来将旧的软件迁移到Git。
-
tea
:今天17时:-)