在进行git提交时使用未来日期
有什么简单的方法可以推迟GitHub提交吗 如果这些提交能在1小时内一个接一个地进行,那也太好了。在进行git提交时使用未来日期,git,github,Git,Github,有什么简单的方法可以推迟GitHub提交吗 如果这些提交能在1小时内一个接一个地进行,那也太好了。 假设我有5个提交,第一个应该在上午10点出现,第二个在上午11点出现,第三个在下午12点出现,依此类推。您可以使用commit--date参数: git commit -m "message" --date "Tue Apr 28 23:00:00 2015 +0300" UPD: 还有一个非常酷的脚本,用于转换旧的提交日期(您需要Perl来运行它): UPD2: 您可以创建自定义别名,以便自
假设我有5个提交,第一个应该在上午10点出现,第二个在上午11点出现,第三个在下午12点出现,依此类推。您可以使用commit--date参数:
git commit -m "message" --date "Tue Apr 28 23:00:00 2015 +0300"
UPD:
还有一个非常酷的脚本,用于转换旧的提交日期(您需要Perl来运行它):
UPD2:
您可以创建自定义别名,以便自动移动所有新提交。为此,请将以下行放入~/.bashrc文件中
alias future-commit='git commit --date "$(date -v +4H)"'
或
重新加载终端,现在您可以在+4小时轮班的情况下提交:
future-commit -m "future commit"
您可以在任何日期、时间使用
GIT_AUTHOR_DATE='your date' GIT_COMMITTER_DATE='your date' git commit -m 'message'
“您的日期”的格式类似于2015年5月1日星期五19:32:10-0400
请注意,术语和时间戳都需要设置(与其他注释和答案中提供的选项不同)
一般来说,作者日期是github/在git日志等中获取的日期,而提交者日期在查看所有提交信息时可见,如在
gitk
中。如果仅更改作者日期有效,请使用--date
选项作为其他答案。注意:如果您需要在很遥远的将来推迟提交,Git 2.13.x/Git 2.14(2017年第3季度)将满足您的需要
Git的源代码将时间戳称为无符号长时间。在32位平台上,以及在Windows上,unsigned long的大小不足以 捕捉“遥远得离谱”的日期 当然,对于
long
数据,它完全符合C标准
键入以引用32位整数。这就是为什么时间\u t
数据类型
存在:因此即使long
是32位,它也可以是64位。Git的源代码只是对时间戳使用了不正确的数据类型,仅此而已 参见(2017年4月26日),(2017年4月21日)和(2017年4月20日).
参见(2017年5月8日)作者。
(于2017年5月16日被合并) 时间戳使用
uintmax\u t
以前,我们使用了无符号long
作为时间戳。这只是一个好机会
Linux上的选择,在Linux上,我们隐式地知道无符号long
是什么
用于时间\u t
但是,出于两个原因,我们希望对时间戳使用不同的数据类型:
- 没有什么规定
应该与无符号长
的数据类型相同,事实上,例如在64位窗口上,它不是:时间
为32位,但unsigned long
为64位time\u t
- 即使在32位Linux上,
(因此unsigned long
)是32位的,我们也希望能够用Git对时间戳进行编码,即使系统库无法将这些时间戳格式化为日期字符串,但这些时间戳在未来的时间里仍然遥不可及time_t
timestamp\t
:时间戳的新数据类型
Git的源代码假设unsigned long至少与
时间
。这是不正确的,特别是造成了很多问题
其中unsigned long仅为32位(特别是在Windows上,甚至是64位)
版本)
因此,让我们使用更合适的数据类型来代替。准备中 为此,我们引入了新的
timestamp\t
数据类型
由于我们将使用的数据类型不一定与时间相同,
我们需要非常小心地使用时间\u t
,无论何时我们与
系统功能,以及时间戳
其他地方
请注意,在Git2.24(2019年第4季度)之前,新的
时间戳类型是有缺陷的
参见作者(2019年9月24日)
帮助人:。
(于2019年10月9日合并)
name rev
:避免截止时间戳下溢
当使用commit ish参数调用“git name rev
”时,它会尝试保存一些工作,并且不会访问比最早的给定提交的提交者日期早一天的提交,减去一天的slop。
由于我们的“timestamp\u t
”是一种无符号类型,因此当最早提交的提交人日期在UNIX纪元的一天之内时,这会导致时间戳下溢。
因此,截止时间戳将在遥远的将来结束,“git name rev
”不会访问任何提交,并将每个给定的提交命名为“未定义”。
检查从最早提交人日期中减去slop是否会导致下溢,在这种情况下不使用截止。
我们没有TIME\u MIN
常量(timestamp\t
:时间戳的新数据类型,2017-04-26,Git v2.14.0-rc0)没有添加一个,所以现在就添加
请注意,截止时间时间戳
变量的类型以前曾被签名(名称修订版
:将“长
”变量更改为时间戳
,2017-05-20,Git v2.14.0-rc0)。
即使在那时,行为仍然是一样的,但从最早的提交人日期中减去slop时并没有发生下溢,而是在name\u rev()
中将有符号的截止时间戳与无符号的提交人日期进行比较时发生下溢
瞧,这个暗流bug和“git name rev
”本身一样古老
您可以设置的可能的副本。这应该是你需要的。为什么不……你知道……和你的雇主谈谈这件事呢?如果你解释说这是在你自己的时间(可能是在你自己的硬件上),我怀疑他们会提出投诉。这是一个让你自己被解雇的好方法。那就是日期
future-commit -m "future commit"
GIT_AUTHOR_DATE='your date' GIT_COMMITTER_DATE='your date' git commit -m 'message'