如何在Xcode中实现类似VSCode的合并冲突快捷处理功能?
Xcode 合并冲突处理完整方案
自带快捷冲突处理功能(对应VSCode的一键选择逻辑)
Xcode 13及以上版本已经内置了和VSCode逻辑完全一致的快捷冲突处理选项,你之前没找到大概率是没有注意到冲突块上方的交互按钮:
- 打开存在冲突的
.swift源码文件,Xcode识别到Git冲突标记后,会在每一个冲突块的顶部显示三个操作按钮- 「Keep Left」:保留当前所在分支的原有内容,对应VSCode的「保留原有内容」
- 「Keep Right」:接受合入分支的传入内容,对应VSCode的「接受传入更改」
- 「Keep Both」:按顺序保留两边的所有内容
- 如果需要批量处理单个文件的所有冲突,可以点击顶部导航栏的「Source Control」→「Resolve Conflicts」,选择对应全局操作即可。
开发者常用的其他冲突处理方案
- 第三方Git可视化工具:Sourcetree、Tower等GUI工具的内置冲突编辑器也支持一键选择保留版本,交互逻辑更直观,适合同时处理多文件冲突的场景
- 复用VSCode处理:如果已经习惯VSCode的冲突操作逻辑,直接把冲突的
.swift文件拖入VSCode中处理,修改完成后切回Xcode即可正常编译,不需要额外适配 - 终端命令行处理:适合无GUI环境操作,或者需要批量处理大量冲突的场景,具体操作见下一部分
终端处理合并冲突的具体操作步骤
- 合并分支触发冲突后,先执行
git status查看所有冲突文件,标记为both modified的文件即为存在冲突的文件 - 若需要全盘保留当前分支的内容,执行
git checkout --ours 冲突文件名;若需要全盘接受传入分支的内容,执行git checkout --theirs 冲突文件名 - 若需要手动调整内容,直接用编辑器打开冲突文件,删除
<<<<<<<、=======、>>>>>>>三类冲突标记,保留需要的代码即可 - 单个文件处理完成后,执行
git add 冲突文件名将文件加入暂存区 - 所有冲突文件全部处理完成后,执行
git commit完成合并,终端会自动生成合并提交备注,直接保存退出即可 - 若操作过程中需要放弃本次合并,回到合并前的状态,执行
git merge --abort即可
内容的提问来源于stack exchange,提问作者Yuuu
相关产品推荐
相关产品推荐

