Git Merge代码冲突的解决方式
我在自己的分支开发,我在 dev 分支开发,想提交 Merge Request 合并到 main 分支,但是代码冲突,无法合并,需要先处理冲突,常用的解法有两种,一种是 merge 的方式合并代码,另一种是 rebase
merge 方式合并
这种方式需要有 push 主分支代码的权限
1 | # 先切换到main分支 |
这个时候可能会出现代码冲突,建议使用 vscode 之类的软件进行合并,使用 VSCode 合并方式如下:
冲突解决完成,建议搜索一下关键词 >>>>>>>,能搜到,说明你的冲突还没解决完。
1 | # 合并完成后,将代码再次提交 |
rebase 方式合并
rebase 的方式就是改变代码的分支起点,类似于把 dev 分支的起点转变到 main 的最新
1 | main |
变成
1 | A---B---C---D (main) |
其中 E’ 和 F’ 是 E、F 在 D 基础上重放的副本。
这样的好处是合并后的代码历史更简洁,是一条直线,且合并的时候可以不用管理员来处理代码冲突的情况(由自己处理掉),坏处是比较麻烦,可能会多次处理冲突。
1 | # 保证main分支是最新的 |
如果这个界面直接 :wq 保存退出
这个时候如果有冲突,rebase 会停止,这个时候你需要手动解决冲突
建议使用 vscode 之类的软件解决冲突,使用 VSCode 合并方式如下:
冲突解决完成,建议搜索一下关键词 >>>>>>>,能搜到,说明你的冲突还没解决完。
解决完成后,执行
1 | git add . |
确保没有 both modified:
然后继续执行 rebase:
1 | git rebase --continue |
如果有冲突,再次手动解决冲突,直到 rebase 操作结束。结束后你应该能看到:
因为分支历史被改写了,所以会出现 当前状态同时领先远程和落后远程的情况,这个时候需要强制推送到
1 | git push --force-with-lease origin dev |
然后你就可以正常的 merge 代码了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
评论







