在 macos 上处理 git 冲突需先识别冲突文件,手动或借助 vs code 删除冲突标记()并保留/融合代码,再执行 git add 和 git commit 完成合并。
在 macos 上处理 git 代码冲突,核心是理解冲突标记、选择合适方式编辑或合并,并正确完成提交。整个过程不依赖特殊工具,终端 + 编辑器就能完成,但配合 vs code 或其他现代编辑器能显著提升效率。
识别冲突文件并定位问题位置
执行合并(如 git pull 或 git merge feature-x)后若出现冲突,Git 会中断操作并提示类似:
Automatic merge failed; fix conflicts and then commit the result.
此时运行:
git status
输出中会列出 Unmerged paths 下的文件,状态为 both modified —— 这些就是需要处理的冲突文件。
用 VS Code、Sublime Text 或系统自带的 TextEdit(推荐前两者)打开该文件,你会看到类似结构:
const API_URL = "https://api.dev.example.com";=======
const API_URL = "https://api.staging.example.com";
>>>>>> feature/config-update
其中:
• 到 <code>======= 是你当前分支(如 main)的修改;
• ======= 到 >>>>>> 是待合并分支(如 feature/config-update)的修改。
手动编辑删除标记并保留正确逻辑
你需要根据实际需求决定最终代码内容,常见做法有:
- 只保留本地版本:删掉
=======和>>>>>> ...及其后面的内容,只留上方的代码 - 只保留对方版本:删掉
和 <code>=======及其上方内容,只留>>>>>>后面的代码 - 融合两版逻辑:比如把两个不同 URL 都保留,改写成环境变量判断,或注释说明用途
关键一步:必须彻底删除三行冲突标记本身(、<code>=======、>>>>>>),否则 Git 仍视其为未解决。
用命令快速采纳某一方全部更改(适合整文件覆盖)
如果某个冲突文件你明确只想用当前分支或对方分支的完整内容,无需逐行编辑,可直接运行:
-
保留当前分支(HEAD)全部内容:
git checkout --ours src/utils.js -
采用待合并分支全部内容:
git checkout --theirs src/utils.js
执行后记得立即 git add src/utils.js 将其标记为已解决。注意:--ours/--theirs 在 git merge 场景下含义固定(HEAD 是 ours,传入分支是 theirs);但在 git rebase 中相反,需留意上下文。
借助 VS Code 可视化快捷操作(macOS 推荐)
VS Code 对 Git 冲突支持极好。打开冲突文件后,编辑器顶部会出现「Accept Current Change」「Accept Incoming Change」「Accept Both Changes」等按钮,点击即可自动删除标记并插入对应代码。还能侧边对比差异,鼠标悬停可预览效果。配置方法:
- 确保已安装 VS Code 并在终端中可调用:
code --version有输出 - 设为 Git 默认 mergetool:
git config --global merge.tool vscode - 触发图形化合并:
git mergetool→ 按提示操作即可
保存关闭后,VS Code 会自动将文件加入暂存区,你只需最后执行 git commit 完成合并。
处理完所有冲突文件后,统一执行 git add .(或逐个 git add 文件名),再 git commit 提交。Git 会自动生成合并提交信息,也可加 -m "resolve merge conflicts" 自定义。不复杂但容易忽略。











