为什么git log不同使用方式展示的提交日期不一致?
问题原因
Git的每个提交存储两个独立的日期字段,你遇到的差异是两个字段值不同导致的:
- 作者日期(Author Date):
--date参数修改的就是这个字段,默认无参数的git log展示的也是这个值 - 提交者日期(Committer Date):默认是执行提交操作时的系统时间,你用
%ci格式化输出的就是这个字段的值
解决方案
方法1:提交时直接同步设置两个日期
在执行git commit前设置GIT_AUTHOR_DATE和GIT_COMMITTER_DATE两个环境变量,就能让两个日期保持一致:
# 方式1:临时设置环境变量后提交 export CUSTOM_DATE="2021-11-18T11:00:00+00:00" export GIT_AUTHOR_DATE="$CUSTOM_DATE" export GIT_COMMITTER_DATE="$CUSTOM_DATE" git commit -m '你的提交信息' # 提交完成后可执行unset GIT_AUTHOR_DATE GIT_COMMITTER_DATE CUSTOM_DATE清除变量 # 方式2:仅对本次提交生效,不用额外设置/清除全局变量 GIT_AUTHOR_DATE="2021-11-18T11:00:00+00:00" GIT_COMMITTER_DATE="2021-11-18T11:00:00+00:00" git commit -m '你的提交信息' --date="2021-11-18T11:00:00+00:00"
方法2:修改已存在提交的两个日期
如果已经提交完成,需要修正历史提交的日期,可以用交互式rebase批量处理:
# 以修改最近2个提交为例 git rebase -i HEAD~2 # 弹出的编辑界面中,把需要修改日期的提交前的`pick`改为`edit`,保存退出 # 依次对每个待修改的提交执行如下命令: GIT_AUTHOR_DATE="自定义日期" GIT_COMMITTER_DATE="自定义日期" git commit --amend --no-edit git rebase --continue
补充说明
如果你后续需要用format参数查询自定义的作者日期,把%ci替换为%ai即可,输出结果和默认git log展示的日期一致:
git log --format="%ai"
内容的提问来源于stack exchange,提问作者dmvict
相关产品推荐
相关产品推荐

