Skip to content Skip to footer

Git冲突解决全攻略:从手忙脚乱到从容应对(附实战案例)

(配图建议:程序员抓狂表情+Git报错界面拼接图)

一、Git冲突的"爆炸现场"实录刚入职的小王今天遇到了职业生涯第一个Git冲突:CONFLICT (content): Merge conflict in app.js(此时他慌得连鼠标都拿不稳了...)

1.1 冲突产生三宗罪罪魁祸首1:多人同时修改同一文件(比如你和同事都改了登录模块)隐藏杀手2:不同分支的代码合并(feature分支合并到dev时容易炸)常见帮凶3:文件删除/重命名冲突(张三删了文件,李四还在修改它)1.2 冲突文件里的"战场遗迹"打开冲突文件你会看到这样的"战争痕迹":```javascript<<<<<<< HEADconst login = () => console.log("新版登录逻辑");=======const login = () => alert("旧版弹窗登录");

dev```(这个符号战场看着就让人头疼!!!)

二、冲突解决四步绝杀法2.1 查看冲突概况bashgit status输出示例:Unmerged paths: (use "git add ..." to mark resolution) both modified: app.js(重点注意标红的部分)

2.2 打开战场文件用VS Code打开冲突文件,你会看到这样的智能提示:(点击"Accept Current Change"就能快速选择当前版本)

2.3 手动调和矛盾保留需要的代码,删除冲突标记:javascript// 最终调和版const login = () => { console.log("新版日志记录"); alert("兼容旧版弹窗");}(重要提示:不要直接删除别人的代码!先沟通再修改)

2.4 标记和平降临bashgit add app.jsgit commit -m "解决app.js登录冲突"(这个commit信息要写清楚解决了什么冲突)

三、高级玩家必备技巧3.1 三路合并大法bashgit mergetool -t vimdiff(适合喜欢命令行的大神,三窗口对比一目了然)

3.2 冲突预防指南设置预提交钩子(pre-commit hook)检查冲突每天早上的第一件事:git pull --rebase重要文件拆分策略(把utils.js拆成auth.js和log.js)3.3 后悔药套餐如果解决错了怎么办?bashgit checkout --theirs app.js # 采用对方版本git checkout --ours app.js # 采用自己版本(慎用!这相当于直接认输或强推)

四、真实案例:电商项目踩坑记某次大促前的惨痛教训:

事故原因:- A同事改了商品价格计算逻辑- B同事调整了优惠券叠加规则- 两人在同一个util.js文件修改却未及时同步

解决方案:1. 使用git log --merge查看冲突提交历史2. 用WebStorm的合并工具进行可视化对比3. 新增priceCalculator.js和couponHandler.js解耦逻辑

五、Git冲突逃生口诀记住这个顺口溜:冲突出现不要慌 git status先扫场 对比工具来帮忙 保留精华删标记 add commit不能忘 及时沟通是良方

六、延伸阅读(避坑指南)当遇到CONFLICT (rename/delete)时怎么办?二进制文件冲突的特殊处理(比如图片、PDF)使用.gitattributes文件定义合并策略最后送大家一句话:"真正的版本控制大师,不是从不制造冲突,而是善于化解冲突。"(现在就去给你的Git配置个好看的diff工具吧!)