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

从派生仓库分支向不同Staging分支合并后拉取请求出现异常提交的调和方法咨询

从派生仓库分支向不同Staging分支合并后拉取请求出现异常提交的调和方法咨询

看起来你遇到的问题根源是:你的分支X现在意外包含了B分支独有的CB1、CB2提交,导致向A分支提PR时,这些不属于你且不该进入A的修改被带进来了。这大概率是因为你在合并X到B的过程中,把B的新提交引入到了自己的X分支历史里——毕竟B在合并A之后又有了新的提交,当你做合并操作时,这些提交就被加到了X的记录中,而A分支并没有这些内容,所以PR会把它们当成差异展示出来。

别担心,这个问题完全可以解决,具体步骤如下:

  • 先同步上游仓库的最新代码
    首先确保你的本地仓库和原仓库(上游)保持同步,拉取最新的A分支内容:

    • 如果还没添加上游仓库,先执行:git remote add upstream <原仓库的URL>
    • 拉取上游所有分支的最新内容:git fetch upstream
    • 切换到你的X分支:git checkout X
  • 用Rebase清理分支历史
    接下来把你的X分支的提交重新“嫁接”到最新的A分支之上,这样就能剔除掉B分支的那些无关提交:

    • 执行命令:git rebase upstream/A
    • 这个过程中可能会再次遇到合并冲突,就像你之前处理的那样——解决完冲突后,执行git add .标记冲突已解决,然后用git rebase --continue继续完成rebase,直到整个过程结束。
  • 强制推送更新远程分支
    因为你之前已经把X分支推送到自己的fork仓库了,现在需要强制推送覆盖远程的X分支(注意:确保只有你自己在使用这个X分支,不然会影响其他协作者):

    • 执行命令:git push -f origin X
  • 更新PR查看效果
    现在回到PR页面,你会发现针对A分支的PR已经自动更新,里面只会保留你X分支原本的修改,CB1、CB2这些来自B的提交已经被移除了。

另外给你提个小建议:以后如果需要向不同的staging分支提交代码,最好为每个目标分支单独创建对应的特性分支,比如基于A的X分支专门用于向A提PR,基于B的Y分支专门用于向B提PR,这样能避免分支历史混乱,减少这类问题的发生。

备注:内容来源于stack exchange,提问作者heretoinfinity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 12:14:27