电脑课堂
柔彩主题三 · 更轻盈的阅读体验

Git冲突检测:代码合并出问题怎么办?

发布时间:2025-12-24 19:30:29 阅读:338 次

你在公司写完一段功能代码,准备推送到远程仓库,结果发现同事也在同一文件上改了东西。一执行 git push,提示 merge conflict——代码冲突来了。这时候,光着急没用,得搞明白 Git 是怎么检测到冲突的,以及怎么处理它。

什么时候会触发冲突检测

Git 在合并分支(git merge)或拉取远程更新(git pull)时,会自动进行冲突检测。只要同一个文件的同一段代码在两个分支中都被修改过,Git 就无法自动判断该保留哪个版本,于是标记为冲突,停下来等你处理。

比如你和同事都改了 login.js 里的登录验证逻辑,你改了用户名校验,他改了密码强度检查,碰巧改的是相邻几行。Git 发现这块“重叠”修改,就会报冲突。

怎么看哪里冲突了?

执行合并操作后,如果出现冲突,Git 会在终端列出有冲突的文件。打开这些文件,你会看到类似下面的内容:

<<<<<<< HEAD
console.log('本地的登录逻辑');
=======
console.log('远程新增的日志跟踪');
>>>>>>> feature/tracking

上面这段就是 Git 标记的冲突区块。<<<<<<< HEAD 到 ======= 之间是当前分支(比如 main)的内容,======= 到 >>>>>>> 之间是即将合并进来的分支内容。

手动解决冲突的步骤

第一步,打开冲突文件,仔细对比两段代码想实现什么功能。别急着删,先看懂逻辑。

比如上面那个例子,其实两条日志都想保留。那就改成:

console.log('本地的登录逻辑');
console.log('远程新增的日志跟踪');

然后删掉 <<<<<<<、======= 和 >>>>>>> 这些标记符。

保存文件后,在终端执行:

git add login.js

把解决后的文件加入暂存区。接着运行:

git commit

Git 会弹出编辑器让你写提交信息,保存后就算完成合并了。

用工具辅助检测更省心

手动看标记适合小项目,但文件一多就容易漏。很多人用 VS Code,打开有冲突的文件时,编辑器顶部会提示“Accept Current Change”或“Accept Incoming Change”,还能一键选两边都保留。

也可以配置 Git 的合并工具,比如 meld、Beyond Compare,命令行输入 git mergetool 就能图形化解决冲突,点点鼠标就能搞定。

预防比处理更重要

团队开发时,别闷头写一周代码再合并。建议每天 pull 一次主干,及时同步别人改动。如果发现某个文件多人频繁修改,最好提前沟通分工,比如拆成多个小文件,减少“撞车”概率。

另外,提交前加个 git status 看看有没有未合并的变更,也能避免意外冲突。