代码合并冲突解决:Git 合并冲突的代码处理技巧

Git 合并冲突的常见场景

当多个分支修改同一文件的相同区域时,Git 无法自动合并,会标记为冲突状态。冲突文件会包含特殊标记(<<<<<<<=======>>>>>>>),需手动解决。

识别冲突文件

运行 git status 查看冲突文件列表。冲突文件会显示为 both modified 状态。
冲突标记示例:

<<<<<<< HEAD 当前分支的代码 ======= 要合并的分支的代码 >>>>>>> branch-name 

手动解决冲突步骤

  1. 打开冲突文件:用编辑器或 IDE 定位冲突标记,逐项分析需要保留的代码。
  2. 选择保留内容:删除冲突标记(<<<<<<<=======>>>>>>>),保留正确的代码逻辑。
  3. 验证修改:运行测试或编译,确保解决后的代码功能正常。

使用工具辅助解决

  • VS Code:内置 Git 冲突解决界面,支持一键选择保留当前分支或合并分支的代码。
  • IntelliJ IDEA:提供三窗格对比视图,支持合并编辑。
  • 命令行工具:运行 git mergetool 调用配置的差异工具(如 meldkdiff3)。

完成合并并提交

提交合并结果:

git commit 

提交信息会自动填充为合并描述,无需手动填写。

将解决后的文件标记为已解决:

git add <file> 

避免冲突的预防措施

  • 频繁拉取远程分支更新:git pull --rebase 减少冲突概率。
  • 小颗粒度提交:拆分大改动为多次提交,降低冲突范围。
  • 团队协作规范:约定文件修改权限或使用代码所有权机制。

复杂冲突处理

若冲突涉及二进制文件或历史重构,可考虑以下方法:

  • 使用 git checkout --ours--theirs 强制选择一方版本。
  • 通过 git reset 回退合并,重新规划修改逻辑。

关键注意事项

  • 解决冲突后必须测试,避免引入隐性错误。
  • 禁止直接提交包含冲突标记的文件。
  • 若冲突无法短时间解决,可暂存进度:git stash 保存当前修改。
Could not load content