我需要使用Git进行一些提交,但我希望git-log中的时间戳是未来的。
我如何在git中进行提交,以便在git日志中注册一个未来时间戳?
我需要使用Git进行一些提交,但我希望git-log中的时间戳是未来的。
我如何在git中进行提交,以便在git日志中注册一个未来时间戳?
你应该等一会儿。
你也可以这样做:
/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!
注意,有作者日期和提交日期,所以一定要设置正确的日期(或两个)。
你可以更正提交,以2037年为例:
git commit --amend --date="Wed Feb 16 14:00 2037 +0100"
我也尝试了2038年,但是我得到了一个空值的日期。
如果您希望在将项目添加到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 文件的更改日期进行提交,并为实际提交日期提供一个好的说明性信息。
通过结合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),因此$()符号可能不适用于您(请改用反引号(`))。
如果您想用“未来”的日期修改提交,例如这个答案:
git commit --amend --date="Wed Feb 16 14:00 2037 +0100"
See commit 1820703 (21 Aug 2018) by Derrick Stolee (derrickstolee
).
(Merged by Junio C Hamano -- gitster
-- in commit 1392c5d, 27 Aug 2018)
commit
: usetimestamp_t
forauthor_date_slab
The
author_date_slab
is used to store the author date of a commit when walking with the--author-date
flag in rev-list or log.
This was added as an unsigned long in 81c6b38 ("log
:--author-date-order
", June 2013, Git 1.8.4-rc0)由于在平台上
unsigned long
的位数不确定(例如在Linux上为64位,在Windows上为32位),因此在commit.c
中对作者日期的大多数引用都转换为timestamp_t
,是在dddbad7(“timestamp_t:时间戳的新数据类型”,2017年4月,Git 2.14.0-rc0)中实现的。However, the slab definition was missed, leading to a mismatch in the data types in Windows.
This would not reveal itself as a bug unless someone authors a commit after February 2106, but commits can store anything as their author date.