执行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
让两个日期一致的解决方法
如果你希望提交日期与作者日期保持同步,可根据场景选择操作:
修改单个提交:针对目标提交执行,将提交日期同步为作者日期
git commit --amend --no-edit --date="$(git show -s --format=%ai 0bf6721)"完成后再次执行
git push --force覆盖远程提交批量修改提交(交互式rebase时):在
git rebase -i的编辑界面,将需要调整的提交标记为edit,然后执行:GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit --amend --no-edit完成单个提交修改后执行
git rebase --continue,全部完成后force push远程仓库
内容的提问来源于stack exchange,提问作者user27052453
相关产品推荐
相关产品推荐

