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

GitHub拉取请求中重复出现旧提交(不同ID)问题求助

解决PR中出现旧提交的问题

嘿,我遇到过一模一样的问题!这大概率是因为你创建新分支的时候,没在已经同步好远程的master分支上操作——要么是重置master前就建了分支,要么是重置后没切回同步后的master再开新分支,导致你的分支里带上了远程已经有的那个ddca57d...提交,Git自然会把它当成你分支的独有提交显示在PR里。

下面分两种场景给你解决方案:

场景1:你的新分支还没推送到远程

这种情况最简单,直接重新基于最新master建分支就行:

  • 先切回同步好的master:git checkout master
  • 再拉一下确保完全同步(保险起见):git pull origin master
  • 删除旧的问题分支(比如你的分支叫readme-update):git branch -D readme-update
  • 基于最新master重新建分支:git checkout -b readme-update
  • 把你之前的有效提交(08cc673...)挑到新分支上:git cherry-pick 08cc67393f4e121ae06b3cbd08e1bf01db490ddc
    • 如果碰到冲突,手动解决后执行git cherry-pick --continue就行
  • 最后推送到远程开PR:git push origin readme-update

场景2:新分支已经推送到远程(且团队允许强制推送)

如果已经推上去了,就用变基把旧提交删掉:

  • 切到你的功能分支:git checkout readme-update
  • 执行交互式变基:git rebase -i master
    • 这时候会弹出编辑器,里面列着你分支相对于master的所有提交。找到那个旧的ddca57d...提交,把它前面的pick改成drop,保存退出
    • 要是有冲突,解决后执行git rebase --continue
  • 安全地强制推送到远程:git push origin readme-update --force-with-lease
    • 用--force-with-lease比直接--force靠谱,能避免不小心覆盖别人的提交
  • 刷新PR页面,你会发现旧提交已经消失了,只剩你自己的Preparing readme提交

小提醒

下次创建新分支前,一定要先确认当前所在的分支是已经和远程完全同步的主分支(比如master/main),这样能从根源避免这类问题。如果团队不允许强制推送,也可以直接按场景1的方法新建分支、挑提交,然后开新PR,把旧PR关掉就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:32:13