分支未领先上游master无法创建PR,如何排查解决
问题原因
触发This branch is not ahead of the upstream master提示、PR按钮置灰的核心原因是:代码托管平台判定你当前要提交PR的旧分支,相对目标分支master没有任何独有的增量提交,创建无内容差异的PR没有实际合并意义,所以直接禁用了创建入口。
这个问题和仓库此前修改默认主分支名的操作直接相关:绝大多数团队修改默认主分支名时,是直接将原main分支重命名为master,两条分支本质对应同一条提交线。你手上的旧分支是当初从main切出的,如果切出后你没有在这个分支上提交过任何独有代码,那它相对现在的master自然不存在提交差,就会触发这个拦截。
解决步骤
- 先在本地仓库执行
git fetch origin,同步远程仓库最新的分支状态和提交记录,确保本地能识别到最新的master分支 - 切换到你要提PR的旧分支,执行
git rebase origin/master将分支基线调整到最新的远程master上;如果执行过程中出现代码冲突,按正常流程解决冲突后执行git rebase --continue完成变基即可 - 变基完成后,执行
git push --force-with-lease origin 你的旧分支名称,把调整完基线的分支推送到远程仓库。注意:优先用--force-with-lease而非普通的--force强推,前者会在推送前校验远程分支是否存在其他人新增的提交,避免误覆盖他人代码,安全性更高 - 回到仓库PR创建页面刷新,系统重新计算分支差异后,PR创建按钮就会恢复可用
如果执行完上述操作后发现分支依然没有相对master的增量提交,说明这个旧分支上的所有代码早就已经合入过master了,分支本身已经是冗余状态,直接删除即可,不需要再创建PR。
内容的提问来源于stack exchange,提问作者coure2011
相关产品推荐
相关产品推荐

