我需要使用Git进行一些提交,但我希望将来git-log中的时间戳。
如何在git中进行提交,导致将来的时间戳记在git-log中注册?
答案 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"
请参见commit 1820703的Derrick 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(或操作系统的任何等效项)在您希望提交时运行脚本