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

交互式Rebase后Git远程与本地提交日期不一致问题咨询

Git提交日期本地与远程不一致问题解答

问题背景

我最近通过交互式变基(git rebase -i)将最新提交合并到master分支,用fixup把多个提交压缩成两个并丢弃多余提交信息,之后推送到GitHub的远程master分支。但发现远程仓库的提交日期和本地git log显示的不一致——远程分支的提交日期是变基及推送的日期,而非原提交日期,本地和远程的提交日期差异应该和变基操作有关。

本地git log输出:

% git log
commit 09e76b90aa1c0c3f6a780c8b29b0c93dc2f57143 (HEAD -> master, origin/master)
Author: John Doe <john@doe.com>
Date:   Wed Apr 12 13:23:12 2023 +0200

    1st imputation success no interaction or random sl

commit 2ef860eabd90dfff5197c66a3dbb541174e1146b
Author: John Doe <john@doe.com>
Date:   Thu Mar 9 22:32:49 2023 +0800

    First commit on Arch Linux

GitHub提交历史显示的提交日期为变基推送当天。

疑问

  1. 为何本地与远程分支的提交日期会出现差异?
  2. 是否可以调整Git/GitHub的设置使提交日期保持一致?

解答

1. 日期差异的核心原因

Git的每个提交包含两个关键日期:

  • 作者日期(Author Date):是提交最初被创建的日期,也是本地git log默认显示的Date字段。变基操作默认会保留这个原提交的时间。
  • 提交者日期(Committer Date):是提交最终被写入仓库的日期。交互式变基时,Git会重新生成提交对象,新提交的提交者日期会被设置为变基操作执行的时间。

GitHub默认在提交历史页面展示的是提交者日期,而本地git log默认展示作者日期,这就是两者日期不一致的根本原因。你用fixup压缩提交时生成了新的提交对象,这些提交的提交者日期是变基当天,作者日期保留原时间,所以两边显示的日期不同。

2. 让提交日期保持一致的两种方法

方法一:修改GitHub的日期显示设置

在仓库的提交历史页面,点击右上角的齿轮图标(「Options」),找到「Date format」选项,选择「Author date」。这样GitHub就会和本地git log一样显示作者日期,日期就能保持一致。

方法二:变基时强制同步提交者日期

如果希望变基后的提交者日期和原提交的作者日期一致,可以在执行交互式变基时添加--committer-date-is-author-date参数:

git rebase -i --committer-date-is-author-date <目标分支名>

这个参数会让Git在生成新提交时,把提交者日期设置为原提交的作者日期,这样无论GitHub展示哪种日期,都会和本地的日期匹配。

如果已经完成变基并推送,想要修正远程分支的日期,需要执行强制推送(注意:若有其他协作者在使用该分支,强制推送会覆盖远程内容,务必提前沟通):

git push --force origin master

内容的提问来源于stack exchange,提问作者Pål Bjartan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:32:50