GitLab保护分支场景下,如何合规用feature分支完全替换master代码?
解决方法
由于master是保护分支无法直接推送,只能通过MR合并,且你只有feature分支的推送权限,按下面的步骤操作就能实现用feature完全替换master的代码:
同步本地代码
先把远程仓库的最新代码拉到本地,确保feature分支是最新状态:git fetch origin git checkout feature git pull origin feature用ours策略合并master到feature
执行这条命令,把master的最新版本合并到feature,但全程保留feature的所有代码内容:git merge -s ours origin/master -m "合并master但保留feature代码以替换master"这会生成一个新的合并提交,提交的代码和feature完全一样,但会带上master的提交历史作为父节点,这样GitLab会认可这个合并的合法性,允许你创建MR。
推送feature到远程
git push origin feature提交并合并MR
在GitLab网页端创建从feature到master的Merge Request,你自己审核通过后合并就行。合并完成后,master的代码就和feature完全一致了,而且feature分支也保留着。
你之前的方法没用的原因很简单:你是在本地master分支做了合并操作,但远程master是保护分支,根本推不上去,完全不符合权限规则。上面的方法全程只操作你有权限的feature分支,通过MR完成替换,刚好适配你的环境限制。
内容的提问来源于stack exchange,提问作者koidula
相关产品推荐
相关产品推荐

