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

执行git push --force后提交日期不一致,求原因解析

Git Force Push后提交日期不一致的原因与解决方法

问题核心:Git的双日期机制

Git的每个提交都包含两个独立的日期字段:

  • 作者日期(Author Date):记录提交最初被创建的时间,也就是你第一次编写代码并完成初始提交的时间
  • 提交日期(Commit Date):记录提交对象最后被修改的时间——比如执行rebase、commit --amend、cherry-pick这类操作时,这个日期会被更新为操作执行的当前时间

你的情况正好对应这两个日期的差异:

  • git log 0bf6721默认展示的是作者日期:Wed Sep 18 17:10:54 2024 -0300(原始提交时间)
  • git show -s --format=%ci 0bf6721显示的是提交日期:2024-10-09 14:38:20 -0300(你修改提交并执行force push的时间)

显示不一致的原因

  • GitHub仓库的历史记录默认展示提交日期,所以会显示“joao 于昨日提交”(对应10月9日的操作时间)
  • 而.patch文件会完整保留作者日期和提交日期,其中显眼的原始日期就是作者日期,因此看起来和GitHub历史存在冲突

验证日期差异的命令

执行以下命令可以同时查看两个日期,直观确认差异:

git log --format="作者日期: %ai | 提交日期: %ci" 0bf6721

让两个日期一致的解决方法

如果你希望提交日期与作者日期保持同步,可根据场景选择操作:

  1. 修改单个提交:针对目标提交执行,将提交日期同步为作者日期

    git commit --amend --no-edit --date="$(git show -s --format=%ai 0bf6721)"
    

    完成后再次执行git push --force覆盖远程提交

  2. 批量修改提交(交互式rebase时):在git rebase -i的编辑界面,将需要调整的提交标记为edit,然后执行:

    GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit --amend --no-edit
    

    完成单个提交修改后执行git rebase --continue,全部完成后force push远程仓库

内容的提问来源于stack exchange,提问作者user27052453

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:42:37