gitlab 合并代码分支 Merge 按钮灰掉了,无法合并代码, git merge --no-ff 的作用

错误

提交的分支无法合并,用 git merge --no-ff 合并。

问题发生

在 gitlab 上合并分支代码的时候,因为自己就是管理员,有时候提交代码,准备合并的时候会发现无法合并成功。网页上 Merge 按钮灰掉了,出现提示 :
在这里插入图片描述
点击 “Resolve locally” 按钮:
gitlab 合并代码分支 Merge 按钮灰掉了,无法合并代码, git merge --no-ff 的作用_第1张图片
按照上图完成 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 就行了。

你可能感兴趣的:(gitlab,git,github)