有没有简单的方法推迟GitHub提交?
如果这些提交将在1小时内一个接一个地进行,那也很好 让我们说如果我有5个提交,第一个应该出现在上午10点,第二个出现在上午11点,第三个出现在下午12点,依此类推。
答案 0 :(得分:16)
您可以使用commit --date参数:
git commit -m "message" --date "Tue Apr 28 23:00:00 2015 +0300"
UPD: 还有一个非常酷的脚本用于转移旧提交日期(你需要Perl来运行它): https://raw.githubusercontent.com/gitbits/git-shift/master/git-shift
perl git-shift +5h 2e6fd0a9dc98403c4fca638e411b3451cbc66a89
UPD2: 您可以创建自定义别名,以便自动转移所有新提交。为此,请将以下行放入〜/ .bashrc文件
alias future-commit='git commit --date "$(date -v +4H)"'
或
alias future-commit='git commit --date "$(date -d +4hours)"'
重新加载终端,现在你可以提交+4小时的班次:
future-commit -m "future commit"
答案 1 :(得分:13)
您可以使用
在任何日期和时间进行提交GIT_AUTHOR_DATE='your date' GIT_COMMITTER_DATE='your date' git commit -m 'message'
'your date'
的格式类似于Fri May 01 19:32:10 2015 -0400
。
请注意author and committer are different entities in git术语,因此需要设置两个时间戳(与其他注释和答案中提供的选项不同)。
通常,author_date是由github /在git log等中获取的,并且当您查看所有提交信息时,committer_date是可见的,如gitk
中所示。如果单独更改author_date,请使用--date
选项作为其他答案点。
答案 2 :(得分:0)
注意:如果您需要在非常遥远的未来推迟提交,Git 2.13.x / Git 2。14(2017年第3季度)将满足您的需求。
Git的源代码将时间戳称为无符号长整数 在32位平台以及Windows上,unsigned long不够大 捕捉未来的荒谬日期"。
当然,对于
long
数据,C标准完全有效 type是指32位整数。这就是time_t
数据类型的原因 存在:即使long
为32位,它也可以是64位 Git的源代码只是使用了不正确的数据类型来表示时间戳,全是。
请参阅commit 28f4aee,commit 1e65a98,commit dddbad7(2017年4月26日),commit cb71f8b,commit 1aeb7e7(2017年4月21日)和commit efac8ac ,commit a07fb05,commit e467dc1(2017年4月20日)Johannes Schindelin (dscho
)
请commit 3f78971查看Ramsay Jones (``)(2017年5月8日)
(2017年5月16日Junio C Hamano -- gitster
-- commit b15667b合并)
使用
uintmax_t
作为时间戳以前,我们使用
unsigned long
作为时间戳。这只是一个好消息 Linux上的选择,我们隐含地知道unsigned long
是什么 用于time_t
。但是,我们希望为时间戳使用不同的数据类型,原因有两个:
- 没有任何内容表明
unsigned long
应该与time_t
的数据类型相同,事实上,例如,在64位Windows上,它不是:
unsigned long
为32位,time_t
为64位。
unsigned long
(从而time_t
)是32位,我们希望能够编码当前Git中的时间戳非常荒谬,即使系统库也无法将这些时间戳格式化为日期字符串。因此,让我们只切换到可用的最大整数类型,如今所有实际目的应至少为64位。它当然不能比
unsigned long
更糟糕,所以......
这是基于commit dddbad7(此补丁的一部分):
timestamp_t
:时间戳的新数据类型Git的源代码假设无符号长度至少与之一样精确
time_t
。这是不正确的,特别是导致很多问题 其中unsigned long只有32位(特别是在Windows上,即使在64位上也是如此) 的版本)。因此,让我们使用更合适的数据类型 在筹备 为此,我们引入了新的
timestamp_t
数据类型。由于我们将使用不一定与
time_t
相同的数据类型, 每当我们与之交互时,我们都需要非常小心地使用time_t
系统功能,以及timestamp_t
其他任何地方。