1. 冲突的本质与发生场景
每个开发者都经历过这样的时刻:当你信心满满地执行git merge或git rebase后,终端突然跳出"CONFLICT"的红色警告。这种场景通常出现在以下三种情况:
- 并行修改同一文件:团队成员A修改了app.js的第50行函数实现,同时成员B在相同位置添加了日志代码
- 文件删除与修改冲突:你重命名了config.yaml文件,而同事正在修改原文件内容
- 二进制文件冲突:多人同时修改了图片、PDF等不可合并的文件
关键认知:Git的冲突提示不是系统错误,而是版本控制工具负责任的表现。它主动暴露了需要人工判断的整合点,这比静默覆盖代码安全得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 冲突解决全流程方法论
2.1 预冲突预防措施
在开始任何可能引发冲突的操作前,建议执行以下防御性操作:
bash复制# 获取最新远程变更
git fetch origin
# 在feature分支上执行变基而非合并
git rebase main feature-branch
# 或者使用更安全的交互式变基
git rebase -i main
2.2 冲突标识解析
当冲突发生时,Git会在文件中插入特殊标记:
code复制<<<<<<< HEAD
本地修改内容
=======
远程修改内容
>>>>>>> branch-name
这三个标记分别表示:
<<<<<<< HEAD到=======之间是当前分支的修改=======到>>>>>>>之间是待合并分支的修改
2.3 四步解决法实战
-
使用专业工具:
bash复制# 配置VS Code作为默认合并工具 git config --global merge.tool vscode git config --global mergetool.vscode.cmd "code --wait $MERGED" # 启动可视化工具 git mergetool -
手动编辑策略:
- 保留双方修改(需要手动整合逻辑)
- 选择本地版本(
git checkout --ours <file>)
