错误
提交的分支无法合并,用 git merge --no-ff 合并。
问题发生
在 gitlab 上合并分支代码的时候,因为自己就是管理员,有时候提交代码,准备合并的时候会发现无法合并成功。网页上 Merge 按钮灰掉了,出现提示 :
点击 “Resolve locally” 按钮:
按照上图完成 Step3 然后本地修改完冲突,提交即可。
为什么要用 --no-ff 参数呢?
–no-ff 作用
先解释一下,如果这个项目只有你一个人管理,直接在main分支修改,提交,不需要新建分支,就不会发生这种报错。这种错误只发生在合并分支的时候。
–no-ff :不采用快进式(fast-forward)合并。
快进式合并
图中 main 分支为主分支,xxx 为你切出去的分支。在 xxx 上进行了A,B,C三次修改。现在提交分支 xxx 合并到 main。
D---E---F xxx
/
A---B---C main
快进式合并结果如下:
A---B---C---D---E---F main
Head 从 C,直接跳到 F,就问你这个快进快不快!main 主分支一次性多了三个提交信息。这意味着 main 分支可以回退到 E 提交。
非快进式合并
非快进式合并会将你分支所有的修改合并为一个新的提交 G。
D---E---F xxx
/ \
A---B---C-----------G main
非快进式合并结果如下:
A---B---C---G main
一般来说,非快进式的提交更优。
不仅简洁,还能确保主分支代码的稳定。如果以快进式,回退到 E 提交就属于不稳定的版本了。一旦上线后发现 xxx 的代码有问题,我们回退到 C 就行了。
版权归原作者 蜉蝣1号 所有, 如有侵权,请联系我们删除。