我需要覆盖Git的提交日期,所有的文档都指向--date参数,但是没有一个关于适当格式的线索。我试过了所有我能想到的排列,我得到:“致命:无效的日期格式:“每个人都有错误
--date
xzlaal3s1#
Git 2.6+(Q3 2015)添加了一个新选项。参见commit e4f031e(2015年6月30日)和commit aa1462c、commit a5481a6、commit b7c1e11(2015年6月25日)by Jeff King ( peff )。(由Junio C Hamano -- gitster --合并至commit d939af1,2015年8月3日)
peff
gitster
引入“格式化”日期模式
这将格式直接馈送到strftime。除了更灵活之外,主要的优点是您的系统strftime可以更多地了解您的语言环境的首选格式(例如,如何拼写一周中的每一天)。--date=format:...将格式...提供给系统strftime。使用--date=format:%c以系统区域设置的首选格式显示日期。有关格式占位符的完整列表,请参阅strftime手册。Davide Cavestro在注解中提出了以下示例:
strftime
--date=format:...
...
--date=format:%c
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中测试了日期格式:在那里,您可以看到接受的各种格式:
GIT_AUTHOR_DATE
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
5.seconds.ago, 2.years.3.months.ago, '6am yesterday'
型
内部原始git格式-自纪元以来的秒数加上时区(put另一种方式:'date +"%s %z"'格式)
date +"%s %z"
Mon Jul 3 17:18:43 2006 +0200
ADTC在评论中提问和回答:它接受2006-07-03 15:18:43为本地的吗?是的,它确实工作,它自动采用当地时区。使用这种格式,我不需要麻烦它是一周中的哪一天(Sun,Mon等)。
Sun
Mon
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'
字符串
0aydgbwb3#
日期格式在Documentation/date-formats.txt(man git commit)中没有详细说明,并且非常“人性化”地解析。唯一起作用的是在date.c下阅读源代码并尝试一下。VonC在2.3.0中未提及的要点:
man git commit
8位数,最多达到一些小的限制(TODO哪个?):UNIX时间(自1970年以来的秒)
@<digits> +0000
这似乎是直接进入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指出,这是一个耻辱,因为它阻止了可以用来将旧软件迁移到Git的负日期Is it possible to set a git commit to have a timestamp prior to 1970?。
git log
2^55
git cat-file -p HEAD
2**63 - 1
date causes integer overflow
tea
vvppvyoh4#
下面的缩写形式都适用:1.第一个月
<month>-<day>
<day>.<month>
<day>
12
<month>
/
-
.
1.7
1/7
git log --since 2/4
avkwfej45#
你可以这样写:“yesterday”、“2 days ago”或“one week ago”,或者你可以用破折号输入一个具体的日期。您可以按常规顺序执行此操作。例如,2023年6月19日。
5条答案
按热度按时间xzlaal3s1#
Git 2.6+(Q3 2015)添加了一个新选项。
参见commit e4f031e(2015年6月30日)和commit aa1462c、commit a5481a6、commit 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在注解中提出了以下示例:
字符串
原始答复(2014年年中)
--date
选项(在2010年12月12日的commit 02b47cd中引入)2009,对于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中工作)型
内部原始git格式-自纪元以来的秒数加上时区
(put另一种方式:'
date +"%s %z"
'格式)Mon Jul 3 17:18:43 2006 +0200
ADTC在评论中提问和回答:
它接受2006-07-03 15:18:43为本地的吗?
是的,它确实工作,它自动采用当地时区。
使用这种格式,我不需要麻烦它是一周中的哪一天(
Sun
,Mon
等)。szqfcxe22#
简单的例子:
字符串
0aydgbwb3#
日期格式在Documentation/date-formats.txt(
man git commit
)中没有详细说明,并且非常“人性化”地解析。唯一起作用的是在date.c下阅读源代码并尝试一下。
VonC在2.3.0中未提及的要点:
@<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指出,这是一个耻辱,因为它阻止了可以用来将旧软件迁移到Git的负日期Is it possible to set a git commit to have a timestamp prior to 1970?。
tea
:今天17点:-)vvppvyoh4#
下面的缩写形式都适用:
1.第一个月
<month>-<day>
个<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日以来的日志:
字符串
avkwfej45#
你可以这样写:“yesterday”、“2 days ago”或“one week ago”,或者你可以用破折号输入一个具体的日期。您可以按常规顺序执行此操作。例如,2023年6月19日。