git rebase后强制推送GitHub提交日期显示错误如何解决
问题原因
执行git rebase(含使用reword选项修改提交信息的场景)时,Git默认会将操作链路覆盖到的所有提交的提交者日期(Committer Date)重置为你执行rebase操作的当前时间。
本地执行git log默认展示的是作者日期(Author Date),也就是你最初完成提交的真实日期,所以本地查看日期正常;而GitHub提交列表默认优先读取提交者日期,因此会显示为你执行rebase当天的日期,和实际提交时间不符。
正确操作方法
要让GitHub端显示正确的提交日期,核心是在rebase操作时保留原提交的提交者日期,不要触发默认的日期重置逻辑:
- 切到需要操作的本地分支,确认工作区没有未提交的改动
- 执行交互rebase时追加
--committer-date-is-author-date参数,例如要修改最近5个提交中某条的提交信息,执行命令:git rebase -i HEAD~5 --committer-date-is-author-date - 在弹出的交互编辑页中,将需要修改信息的提交前的
pick改为reword,保存退出后按提示修改完目标提交信息,等待rebase执行完成 - 本地验证日期正确性:执行
git log --pretty=fuller可同时查看每个提交的作者日期、提交者日期,确认两类日期均和实际提交时间一致 - 验证无误后执行强制推送即可:
git push -f
已推送错误日期版本的修复方案
如果你已经完成rebase并将日期异常的版本推送到了远程,不需要重新修改提交信息,直接执行以下步骤修复:
- 基于当前分支的提交记录,批量将所有提交的提交者日期同步为对应提交的作者日期,执行命令:
git rebase --committer-date-is-author-date <你本次rebase操作的起点提交哈希,或分支对应的基线分支名如origin/main> - 等待rebase无冲突执行完成后,再次执行
git push -f覆盖远程分支,刷新GitHub页面即可看到提交日期恢复为实际提交时间。
注意:如果操作的是多人协作的共享分支,执行强制推送前请和分支上的其他协作者同步进度,避免覆盖他人未同步的提交内容。
内容的提问来源于stack exchange,提问作者Raj Narayanan
相关产品推荐
相关产品推荐

