在采用多分支开发工作流时,建议开发组长将主分支设置为保护分支,开发者创建临时开发分支,完成后向主分支发起合并请求。通过持续集成和代码评审后,开发者将开发分支合并至主分支。
发起合并请求
您可以通过命令行或在 Web 端手动创建合并请求。
通过命令行创建
git push origin local-branch:mr/target-branch/local-branch
手动创建
1. 在代码仓库详情页面,进入合并请求页签,然后单击创建合并请求。
2. 指定合并请求的源分支与目标分支。当源分支与目标分支对比后没有发现冲突,系统提示源分支可合并到目标分支。您可以通过文件改动页签查看文件差异。
3. 创建合并请求后还可以在提交记录页分别查看本次请求中的所有提交历史与单次推送中包含的所有提交记录。
解决合并冲突
造成合并冲突的原因是源分支与目标分支对相同的代码做出了不一致的变更。发起合并请求时将自动比对源分支与目标分支的内容差异,若发现存在冲突内容,系统将提示源分支和目标分支不可自动合并,您可以通过在线或本地两种方式解决冲突后继续发起合并请求。
在线解决冲突
遇到代码冲突的情况往往需要在本地终端中反复拉取并解决,然后再推送至远端仓库中。在线解决冲突功能让繁琐的步骤简化为简单的鼠标操作,单击网页中的查看冲突内容便能够在线预览相冲突的内容。
冲突内容将会被高亮展示,此时选择需要保留的内容。单击右上角的切换按钮快速切换至其他冲突的所在行,解决所有冲突后提交改动,此时将在代码仓库中产生一个新的提交记录。
本地解决冲突
例如:当 branch-01 合并入 master 分支时提示有冲突时,可以先在本地切换至 master 分支并运行命令:
git merge branch-01
找到冲突文件,此时冲突文件会标识冲突内容并询问保留何种内容。选择需保留的内容,保存后重新提交 commit,完成后切换至 branch-01 分支并输入命令:
git merge master
再将修改后的代码推送至远端仓库即可。
确认合并请求
合并的目标分支为保护分支
若合并请求的发起者为分支管理员,那么可以自行合并。若发起者为普通成员,那么需要通过分支管理员的评审才能完成合并。
合并的目标分支为非保护分支
发起者无需经过评审与授权,可以自行发起并完成分支合并。
选择合并类型
在合并请求页面单击合并分支,在下拉列表中选择合并类型,系统将根据选择的合并类型进行相应的合并处理。
直接合并:源分支所有提交记录都会被添加到目标分支, 并且创建一条合并分支的提交记录。
合并时压缩提交记录(Squash):将合并请求中的提交记录压缩成一条, 然后添加到目标分支。
变基合并(Rebase):源分支领先的 1 个提交将会变基添加到目标分支。
删除源分支
发起合并请求时,勾选删除源分支,可在发起合并请求时删除源分支。
Fast-Forward 模式合并
Fast-Forward 模式下的合并过程不会在目标分支中留下曾与源分支进行合并的历史信息。源分支的提交信息将直接与目标分支融合,而不会产生一个两者曾经发生过合并行为的提交记录。
若勾选了以 Fast-Forward 模式合并,远端仓库会在合并时判断是否符合 Fast-Forward 规则。若符合则此合并不会产生新的合并提交记录;若不勾选此模式,则会在合并时保留过往开发记录并产生一个新的合并记录。
勾选此选项相当于使用 git merge 时添加 –ff 参数。
说明: