如何强制用dev分支覆盖远程master解决Gitlab PR合并冲突问题
可行性确认
你作为项目唯一开发人员,所有有效代码提交均已归集到dev分支,全量覆盖master分支的操作完全可行,不会出现协作冲突或有效代码丢失问题。
推荐操作方案(无需调整保护分支规则,适配现有PR工作流)
- 第一步:拉取远程所有分支的最新提交,保证本地版本与远程同步
git fetch origin - 第二步:切换到本地
dev分支,同步远程最新改动git checkout dev git pull origin dev - 第三步:在
dev分支执行合并操作,使用theirs合并策略自动解决所有冲突,冲突内容全部采纳dev分支的版本git merge -X theirs origin/master - 第四步:将合并后的
dev分支提交推送到远程git push origin dev - 第五步:回到Gitlab的PR页面,系统会自动检测到冲突已全部解决,直接执行合并操作即可,合并后的
master分支内容和dev分支完全一致。
备选操作方案(需管理员权限,可保持提交历史简洁)
如果不需要保留合并提交记录,希望master分支的提交历史和dev完全对齐,可以采用硬重置方案:
- 第一步:进入Gitlab项目「设置 - 仓库 - 受保护的分支」页面,临时给你的账号开通
master分支的「允许推送」「允许强制推送」权限 - 第二步:本地切换到
master分支,硬重置为dev分支的内容git checkout master git reset --hard origin/dev - 第三步:强制推送本地
master到远程仓库git push -f origin master - 第四步:推送完成后恢复
master分支的原有保护规则即可,后续部署流程无需调整。
注意事项
操作前建议先给当前master分支打备份标签,避免误操作后无法回滚:
git tag master-backup-$(date +%Y%m%d) origin/master git push origin master-backup-$(date +%Y%m%d)
内容的提问来源于stack exchange,提问作者Yanick Rochon
相关产品推荐
相关产品推荐

