在团队协作开发时,代码合并几乎每天都在发生。你改了登录页面的样式,同事优化了登录逻辑,两个人同时动了同一个文件,结果一提交,Git 就弹出一堆红色提示——合并冲突来了。
什么是合并冲突提示
当你和别人修改了同一段代码,并尝试将分支合并时,Git 无法自动判断该保留谁的版本,就会停下来告诉你:“这里我搞不定,得你来决定。” 这时候终端或编辑器里出现的标记,就是合并冲突提示。
常见的提示内容长这样:
<<<<<<< HEAD
console.log("用户已登录");
=======
alert("登录成功!");
>>>>>>> feature/login-alert
上面这段代码中,<<<<<<< HEAD 到 ======= 是当前分支的内容,也就是你本地的修改;======= 到 >>>>>>> 是要合并进来的分支内容。Git 把选择权交给你,删掉不需要的部分,保留最终想要的代码就行。
别怕,手动解决并不难
很多人第一次看到这些提示会慌,以为代码坏了。其实只要按步骤来,几分钟就能搞定。
比如你在 VS Code 里遇到冲突,编辑器会高亮标出冲突区域,还能一键选择“接受当前更改”或“接受传入更改”。如果两边都要,就手动删掉标记,把两部分逻辑整合一下。
假设你保留打印日志,又想弹个提示,改完后应该是:
console.log("用户已登录");
alert("登录成功!");
保存文件,然后执行 git add . 和 git commit,冲突就解决了。
怎么减少冲突提示的频率
虽然冲突不可避免,但可以降低发生的概率。最简单的办法是:勤拉代码。每次开始写新功能前,先 git pull 把最新改动同步下来。
另外,拆分功能模块也有帮助。比如登录相关的改动集中在一个文件,大家提前沟通好分工,避免多人同时改同一块代码。
用好分支策略也很关键。功能开发走 feature 分支,紧急修复走 hotfix,主分支保持稳定,这样合并时的交叉点少,冲突自然就少了。
编辑器帮你看得更清楚
现在的 IDE 基本都内置了冲突可视化工具。WebStorm、VS Code、SourceTree 都能用不同颜色标出冲突块,左右对比,点几下就能完成合并。
如果你习惯命令行,也可以用 git mergetool 调出图形化合并工具,比如 vimdiff 或 meld,适合喜欢掌控细节的人。
合并冲突提示不是错误,而是协作的信号灯。它提醒你:有人和你一样在乎这块代码。处理得当,它反而是保证代码质量的一道关卡。