常见代码同步冲突场景
你在公司写完一段用户登录逻辑,提交到 Git 仓库。同事小李也在改同一块代码,加了验证码功能。等你下班前 pull 最新代码,结果终端弹出:CONFLICT (content): Merge conflict in src/login.js。这时候别急着删代码,这是典型的代码同步冲突。
这种问题不光在团队协作中常见,自己在不同设备间切换开发时也容易遇到。比如在家拉公司的代码,修改了配置文件,第二天在办公室更新,两边改动撞上了。
理解冲突的本质
Git 不是不能自动合并,而是当两个分支修改了同一文件的同一行,它无法判断该保留谁的。这时候需要人工介入,告诉系统“我想要什么结果”。
打开冲突文件,你会看到类似这样的标记:
<<<<<<< HEAD\nconst login = (user, pass) => { // 你的修改\n=======\nconst login = (user, pass, captcha) => { // 小李的修改\n>>>>>>> branch-feature-captcha\n}上面这段代码里,<<<<<<< HEAD 到 ======= 是你本地的改动,下面那段是远程分支的内容。
手动解决三步走
第一步,打开冲突文件,找到标记区域。根据业务需求决定保留哪边,或者把两边逻辑融合。比如现在登录既要传验证码,又不能破坏原有参数结构,那就改成:
const login = (user, pass, captcha) => {第二步,删掉 Git 的冲突标记符,包括 <<<<<<<、======= 和 >>>>>>> 这些行。
第三步,保存文件,执行 git add src/login.js 标记为已解决,再 git commit 完成合并。
用工具提升效率
如果项目大,冲突文件多,靠手动找太累。VS Code 自带合并编辑器,点开冲突文件右侧会提示“Accept Current Change”或“Accept Incoming Change”,还能一键选“Compare Changes”。点“Accept Both”直接拼起来,再微调就行。
命令行党可以用 git mergetool 调出外部工具,比如 meld 或 vimdiff,左右对比改起来更直观。
预防比解决更重要
每天开工第一件事,先 git pull origin main 拿最新代码。别闷头写两小时,回头发现和别人撞得稀碎。
功能开发尽量开独立分支:git checkout -b feat/user-profile。改完了再合并进主干,减少直接碰撞。
多人协作同一模块时,提前在群里说一声。比如“我正在改订单状态机,别动 order.js”,简单沟通省下后续一堆麻烦。”,"seo_title":"代码同步冲突怎么办?实用解决教程一看就懂","seo_description":"遇到代码同步冲突别头疼,这篇教程带你一步步手动解决并使用工具高效处理,同时给出预防建议,适合开发者日常参考。","keywords":"代码同步冲突,解决教程,Git冲突,合并冲突,代码管理,版本控制"}