You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地修改提交日期后,GitHub显示rebase时间而非修改日期求助

提交日期显示异常的解决办法

我用rebase修改了提交的日期,本地显示正常,但删除远程仓库重新推送后,所有经rebase处理的提交,显示的都是rebase操作的时间,而非我修改后的日期。

问题根源

Git每个提交有两个关键日期:

  • 作者日期(AuthorDate):你修改的那个正确日期,记录提交最初创建的时间
  • 提交日期(CommitDate):rebase操作时自动生成的新时间,记录提交被重新应用的时间

远程仓库默认展示的是提交日期,所以才会出现你看到的情况。

解决步骤

1. 先确认本地提交的日期详情

执行命令查看两个日期的具体值:

git log --pretty=fuller

输出里能清楚看到AuthorDate和CommitDate的区别。

2. 同时修改两个日期

要让远程显示正确日期,必须在修改时同步更新作者日期和提交日期,推荐两种方式:

方式一:交互式rebase逐个修改

  1. 启动交互式rebase,指定要修改的最近N个提交:
git rebase -i HEAD~N
  1. 在弹出的编辑界面,把需要修改的提交行开头的pick改成edit,保存退出。
  2. 进入单个提交的编辑状态后,执行以下命令替换日期(把YYYY-MM-DD HH:MM:SS换成你要的时间):
GIT_COMMITTER_DATE="YYYY-MM-DD HH:MM:SS" git commit --amend --no-edit --date="YYYY-MM-DD HH:MM:SS"
  1. 执行完后继续rebase:
git rebase --continue

重复3、4步直到所有目标提交修改完成。

方式二:批量修改提交日期

如果要一次性修改一段范围内的提交,用filter-branch脚本(替换YYYY-MM-DD HH:MM:SS和N为实际值):

git filter-branch --env-filter '
export GIT_COMMITTER_DATE="YYYY-MM-DD HH:MM:SS"
export GIT_AUTHOR_DATE="YYYY-MM-DD HH:MM:SS"
' HEAD~N..HEAD

⚠️ 注意:这个命令会完全重写提交历史,执行前务必确保本地没有未保存的改动。

3. 强制推送至远程

修改完成后,强制推送到远程仓库(因为历史已被重写):

git push -f origin master

验证

推送完成后查看远程仓库的提交历史,就能看到设置的正确日期了。

内容的提问来源于stack exchange,提问作者Mohammed Sharaf Eddeen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 07:15:59