iovxw

自定义 Git commit 时间

拿来刷小绿点

在需要给 commit 指定时间的时候,可以用 --date 参数

支持的日期格式可以看:

http://stackoverflow.com/questions/19742345/what-is-the-format-for-date-parameter-of-git-commit

使用 'x days ago' 可以很方便的补上之前的小绿点(🙈这功能其实就是拿来干这种事的)


不过这种相对时间格式并不支持未来时间,除非你愿意看看今天是几号(我就是这么懒)

解决方式就是,用 date 命令:

git commit --date="`LANG=C date --d='next day'`"

LANG=C 是为了输出英文日期格式。让 git 直接识别本地时间格式的方法也有,但是这个最简单暴力

--d='next day' 就是字面意思,也可以用 --d='-1 days ago' 之类的

嗯……不过好像更长了……


2016-07-31 更新:

上面的方法只能更改 git 本身的操作时间,并不能更改第三方的,比如 gpg 签名的时间

一个简单暴力的方法就是用 libfaketime

但是注意不要直接用 ubuntu 源里的 faketime 运行 git,会 Segmentation fault

LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="+1d" git ...