用Git做代码版本管理时,很多人在合并分支时看到编辑器里突然冒出红色和绿色的标记,一时间不知道该怎么办。其实这些红线绿线是Git用来提示合并冲突的具体位置,帮你快速定位哪些代码需要手动处理。
红线绿线代表什么
当你执行 git merge 或 git pull 时,如果同一个文件在两个分支中都被修改过,Git 就无法自动决定保留哪一部分,这时就会产生“合并冲突”。打开冲突文件,你会看到类似这样的内容:
<<<<<<< HEAD
当前分支的代码内容
=======
其他分支的代码内容
>>>>>>> feature/login
这里的 <<<<<<< 到 ======= 是当前分支(比如主分支)的内容,通常编辑器会用绿色高亮显示;而 ======= 到 >>>>>>> 是你要合并进来的分支内容,常被标成红色。红绿只是视觉区分,不同编辑器颜色可能不一样,但结构一致。
怎么解决冲突
解决冲突其实就是手动决定保留哪部分代码,或者把两部分合理整合。比如你正在开发登录功能,同事也在改同一段用户验证逻辑,合并时出现冲突,就得看看两边改了啥。
假设你看到这段:
<<<<<<< HEAD
if (user.loggedIn) redirectHome();
=======
if (user.authenticated) redirectDashboard();
>>>>>>> feature/auth-update
这时候你可以判断:是不是两个条件都需要?也许最终改成这样更合适:
if (user.loggedIn || user.authenticated) redirectDashboard();
改完之后,必须删掉 <<<<<<<、======= 和 >>>>>>> 这些标记,否则 Git 不认为冲突已解决。
标记清理后提交
改好文件后,执行 git add 文件名 把它加入暂存区,然后 git commit 完成合并。这时候 Git 会生成一个合并提交,冲突正式结束。
平时多人协作写代码,尤其是赶项目上线时,这种红绿标记天天见。别慌,它不是报错,而是帮你理清思路的工具。看懂结构,动手改完,照样顺利提交。