如何用migration分支完全替换受保护的master分支?
用migration分支完全替换master分支的解决方法
方案1:临时调整分支保护规则(需管理员权限)
如果你有仓库管理员权限,这是最直接的方式:
- 进入仓库设置的「分支保护规则」,找到master对应的规则,暂时关闭「禁止强制推送」选项
- 本地执行命令,用migration的内容生成无冲突的合并提交:
git checkout migration git merge -s ours master # 保留migration所有内容,忽略master的变更 git checkout master git merge migration git push origin master - 推送完成后,立刻恢复master的分支保护规则
方案2:反向合并后提PR(无管理员权限适用)
没权限改保护规则的话,用反向合并绕开冲突:
- 本地切换到migration分支,拉取最新代码:
git checkout migration git pull origin migration - 用
ours策略合并master到migration,这步不会产生冲突,且完全保留migration的代码:git merge -s ours master - 推送合并后的migration到远程:
git push origin migration - 在仓库平台创建从
migration到master的PR,此时PR会显示无冲突,直接合并就能完成替换
方案3:删除重建master分支(需管理员权限)
如果仓库允许删除主分支,也可以用这种方式:
- 仓库设置中暂时允许删除master分支
- 本地删除远程master分支:
git push origin --delete master - 将migration分支重命名为master并推送到远程:
git checkout migration git branch -m master git push origin master - 恢复仓库的分支保护规则,禁止删除master并开启原有保护
内容的提问来源于stack exchange,提问作者Divyanshu Verma
相关产品推荐
相关产品推荐

