# 解决冲突 ## 文件冲突原因 在进行合并、摘取和变基操作时,不可避免的会遇到更改发生冲突,需要先解决冲突,然后才能继续。 ![](./git_tip_conflict.png) 产生冲突的原因很简单: 从同一个节点衍生出两个版本A和B, 在相同的位置,A版本改成某个值,B版本改成另个值,然后把B合并到A上,这时git就会触发冲突,两个版本的优先级是相同的,git不知道该采用哪个值,所以就需要人工干预。 ![](./git_conflict_cause.png) ## 冲突界面介绍 右键TortoiseGit,选择解决冲突,就会弹出冲突列表。 ![](./git_conflict_list.png) 双击列表中的文件,打开合并窗口。 ![](./git_conflict_merge.png) ### 文本框 合并窗口有三个文本框: - 左上角是要导入的版本 - 右上角是当前的版本 - 下方是合并后的版本 要注意的是,只有下方的文本框可以编辑,上面两个都是只读的。 文本框的左边会有一些小图标,它们代表对应行所做更改的操作类型。 ![](./git_merge_icons.png) ### 工具栏 常用的几个操作: - 标记为已解决:在该文档的所有冲突解决完后点击,会在冲突文件列表中删除该文件。 - 上/下一处冲突:快速定位冲突。 - 使用左侧文本块:用于快速采纳更改,下面有个三角,可以选择“使用右侧文本块”。 ## 详细操作 1. 在冲突列表打开冲突文件。 2. 找到下文本框左侧的叹号,该行表示尚未解决的冲突。 3. 然后再看上方两文本框的相同位置。 - “=”代表该版本的修改前的文本; - “+”代表新增或者修改后的文本; - “-”代表删除该行; 4. 然后根据实际情况选择左边或者右边,亦或者两个都不满足,直接在下文本框编辑。 5. 用“上/下一处冲突”切换到下一处冲突编辑。 6. 全部修改完后,点击“标记为已解决”,然后再保存退出。 7. 处理剩下的冲突文件。 8. 测试、提交、推送。