从派生仓库分支向不同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
相关产品推荐
相关产品推荐

