v01*_*dya 66 git command-line-arguments
我需要覆盖git提交的日期,所有文档都指向--date参数,但是然后留下一个没有线索到适当的格式.我已经尝试了我能想到的每一个排列,并且我得到了"致命:无效的日期格式:"每个人的错误.
Von*_*onC 68
Git 2.6 +(2015年第3季度)添加了一个新选项.
请参阅提交e4f031e(2015年6月30日),并提交aa1462c,提交a5481a6,提交b7c1e11(2015年6月25日)作者:Jeff King(peff).
(由Junio C gitsterHamano合并- -在提交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
Run Code Online (Sandbox Code Playgroud)
原始答案(2014年中)
该--date选项(在2009年12月的提交02b47cd中为git1.7.0引入)使用GIT_AUTHOR_DATE与在commit 96b2d4f中测试的日期格式相同的格式:
在那里你可以看到接受的各种格式:
Mon, 3 Jul 2006 17:18:43 +02002006-07-03 17:18:43 +0200Mon Jul 3 15:18:43 20062006-07-03不是1.9.1,适用于2.3.0)relative:参见commit 34dc6e7:
5.seconds.ago,
2.years.3.months.ago,
'6am yesterday'
Run Code Online (Sandbox Code Playgroud)raw:参见commit 7dff9b3(git 1.6.2,2009年3月)
内部原始git格式 - 自epoch加时区后的秒数
(换句话说:' date +"%s %z"'格式)
Mon Jul 3 17:18:43 2006 +0200本地接受2006-07-03 15:18:43吗?
是的它确实有效,它会自动获取本地时区.
与该格式我不需要理会它是一周中的哪一天(Sun,Mon,等).
Dmy*_*huk 12
简单的例子:
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'
Run Code Online (Sandbox Code Playgroud)
日期格式未在Documentation/date-formats.txt(man git commit)中记录,并且非常"人性地"解析.
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^55TODO 附近的某处?)作为1970,即使git cat-file -p HEAD显示正确的数字被存储,所以它似乎是日期转换的限制.
对于任何大于2**63 - 1,大的正面签名长,试图推向GitHub失败date causes integer overflow.那天在GitHub上的提交(由于某种原因, GitHub 无法显示真正的大日期)
VonC指出这是一个耻辱,因为它阻止负面日期是否有可能设置一个git提交在1970年之前有一个时间戳?可用于将旧软件迁移到Git.
tea:今天17点:-)