git commit - 将时间戳设置为未来

时间:2008-12-15 01:24:11

标签: git

我需要使用Git进行一些提交,但我希望将来git-log中的时间戳。

如何在git中进行提交,导致将来的时间戳记在git-log中注册?

6 个答案:

答案 0 :(得分:68)

你应该稍等一下。

或者你可以这样做:

/tmp/x 604% env GIT_AUTHOR_DATE='Wed Dec 19 15:14:05 2029 -0800' git commit -m 'future!'
[master]: created 6348548: "Future!"
 1 files changed, 1 insertions(+), 0 deletions(-)

/tmp/x 605% git log 

Author: Dustin Sallings <dustin@spy.net>
Date:   Wed Dec 19 15:14:05 2029 -0800

    Future!

注意既有作者日期又有提交者日期,所以请务必设置正确的日期(或两者)。

答案 1 :(得分:49)

你可以修改提交,一个2037年的例子:

git commit --amend --date="Wed Feb 16 14:00 2037 +0100"

我也试过了2038年,但后来我得到了一个 null 值。

答案 2 :(得分:10)

如果要在将项目添加到git时保留实际的更改日期,可以使用

env GIT_AUTHOR_DATE="`ls -rt *.cpp|tail -1|xargs date -u -r`" git commit -m "Old sources retaining old change-dates of last changed
 file: `ls -rt *.cpp|tail -1`, actual commit date: `date`"

这将提交最后更改的* .cpp文件的更改日期,以及实际提交日期的一个很好的解释消息。

答案 3 :(得分:2)

通过将Hugo的答案(1)与此处找到的信息(2)相结合,并将某些sed折腾,我得到了这个:

alias newest="find . -path ./.git -prune -o -type f -exec stat -c \"%y %n\" '{}' + | sort -r | head -1 | sed s#'.*\./'##"
GIT_AUTHOR_DATE="$(newest | xargs date -u -r)" GIT_COMMITTER_DATE="$(newest | xargs date -u -r)" git commit -m "Old sources retaining old change-dates of last changed file: $(newest), actual commit date: $(date)"

主要区别在于此版本进行了递归搜索,因此您可以在树中的任何位置获取最新文件 - 尽管它会故意跳过.git目录。

当然,您可能希望在此处删除其中一个日期变量,并且我使用的是最新版本的bash(4.2.37(1)-release),因此$()表示法可能不起作用你(只需用反引号(`)替换它)。

答案 4 :(得分:0)

如果您要修改提交内容,例如this answer中的“从未来”:

git commit --amend --date="Wed Feb 16 14:00 2037 +0100"
  • 不使用2016年之后的日期(Git 2.18或更低版本)
  • 使用Git 2.19(Q3 2018)

请参见commit 1820703Derrick Stolee (derrickstolee)(2018年8月21日)。
(由Junio C Hamano -- gitster --commit 1392c5d中合并,2018年8月27日)

  

commit:将timestamp_t中的author_date_slab用作

     

author_date_slab用于在修订列表或日志中与--author-date标志一起走时存储提交的作者日期。
  在81c6b38(“ log--author-date-order”,2013年6月,Git 1.8.4-rc0)中将其添加为“无符号长”

     

由于“ unsigned long”在各个平台上的位元模棱两可(例如Linux中为64位,Windows中为32位),因此在commit.c中对作者日期的大多数引用是转换为dddbad7中的timestamp_t(“ timestamp_t:时间戳的新数据类型”,2017年4月,Git 2.14.0-rc0)

     

但是,缺少平板定义,导致Windows中的数据类型不匹配。
  除非有人在2106年2月之后提交了一个提交,否则这不会显示为错误 ,但是提交可以存储任何内容作为其提交日期。

答案 5 :(得分:-5)

请问您为什么要这样做?

如果您不想更改时钟,我建议您创建一个脚本来执行提交并使用Windows Scheduler(或操作系统的任何等效项)在您希望提交时运行脚本