Git 如何使用cygwin日期返回时间,使用静态秒值返回日期
我正在使用git,试图同步到去年每个月的第一次提交。我希望能够在每月的第一天,第二天,一个月一个月地回去。或者至少从某个恒定的“秒”值。到目前为止,我有:Git 如何使用cygwin日期返回时间,使用静态秒值返回日期,git,date,cygwin,sync,seconds,Git,Date,Cygwin,Sync,Seconds,我正在使用git,试图同步到去年每个月的第一次提交。我希望能够在每月的第一天,第二天,一个月一个月地回去。或者至少从某个恒定的“秒”值。到目前为止,我有: $(git版本列表--在“$(日期-d”$(日期+%Y-%m-01)-$i个月+%Y-%m)-01”-n 01头之前) 这显然不包括恒定的秒值。目前,运行这个脚本,然后在一小时后再次运行它,会返回两个不同的sha1,因为它要追溯到我运行脚本的确切时间x个月前。无论何时运行此脚本,我都希望返回的sha1是相同的。这有意义吗?有什么想法吗?首先,
$(git版本列表--在“$(日期-d”$(日期+%Y-%m-01)-$i个月+%Y-%m)-01”-n 01头之前)
这显然不包括恒定的秒值。目前,运行这个脚本,然后在一小时后再次运行它,会返回两个不同的sha1,因为它要追溯到我运行脚本的确切时间x个月前。无论何时运行此脚本,我都希望返回的sha1是相同的。这有意义吗?有什么想法吗?首先,您的命令中有一个打字错误。它必须是
--before=“$(…
”,您缺少=
date
的行为在这里不是问题。date+%Y-%m-01
将返回类似2011-10-01
的字符串,不包含额外的时间信息。因此第二次日期调用将减少$i
月数,还将返回类似2011-09-01的格式
。除了该字符串之外,没有其他信息作为参数值--before=
传递给git rev list
<> P>有一些事情你必须考虑使用<代码> GIT Rev列表 >:
HEAD
时,您总是引用当前的分支。因此,例如,当您签出一个获得的提交ID时,您的HEAD将更改。您可能希望使用master
或任何其他分支名称作为引用--before
或--after
参数时混淆输出,因为它们依赖于提交者字段的时间戳trong>$(git rev list--after=“$(日期-d”$(日期+%Y-%m-01)-$i个月+%Y-%m)-01 00:00:00”master | tail-n 1)
这将返回给定月份第一次提交后的第一次提交ID。(此提交不一定是在该月份进行的,可能该月份没有提交。)谢谢Scolytus,对学习者来说非常有洞察力。我将尝试使用
master