Ubuntu 下使用 GitLab 解决合并冲突的实用步骤
一 本地命令行解决(通用且可控)
- 准备环境:安装 Git(如未安装执行:sudo apt-get update && sudo apt-get install git)。
- 同步远端并检出目标分支:
- 拉取最新引用:git fetch --all --prune
- 切换到你的功能分支:git checkout feature/xxx
- 更新远端分支:git pull origin feature/xxx
- 合并或变基触发冲突:
- 合并目标分支(如 main/develop):git merge main(或 git rebase main)
- 解决冲突:
- 推送结果:
- 合并后推送:git push origin feature/xxx
- 变基后推送(可能需要强制,谨慎):git push --force-with-lease origin feature/xxx
- 小技巧:使用 git mergetool 调用可视化工具辅助解决;用 git status 随时确认状态。
二 使用 VS Code 可视化解决
- 同步远端:git remote update -p
- 切换到你的分支:git checkout feature/xxx
- 合并主分支触发冲突:git merge main
- 在 VS Code 打开项目,进入左侧“源代码管理”,冲突文件会标注 CONFLICT:
- 点击文件,使用“接受当前更改/接受传入更改/保留双方更改”逐一处理;
- 保存文件后执行:git add → git commit -m “Resolve merge conflict” → git push origin feature/xxx。
- 适合不熟悉命令行或冲突较多的场景。
三 使用 GitLab 网页端在线解决(适合简单文本冲突)
- 在 GitLab 发起或查看合并请求(MR),若存在冲突,页面会提示无法自动合并。
- 进入 MR 页面,选择 Resolve conflicts(在线编辑),按提示编辑冲突区域并删除冲突标记。
- 点击 Commit to source branch 提交到源分支。
- 回到 MR 页面,点击 Merge 完成合并。
- 适合改动较小、无需本地复杂调试的场景。
四 常见场景与建议
- 推送被拒(非快进):先同步远端并合并/变基解决冲突后再推送,避免直接 git push --force。
- 保持提交历史整洁:优先使用 git merge --no-ff 保留合并节点,或在功能分支上 rebase main 后再合并。
- 避免污染功能分支:在合并前基于功能分支创建 临时分支 进行合并演练,确认冲突与改动后再把解决结果合并回功能分支。
- 冲突标记未清除就提交:务必删除 <<<<<<< / ======= / >>>>>>> 标记,并用 git status 确认所有冲突已解决。
- 工具辅助:git mergetool 与 VS Code 能显著提升处理效率。