文章目录

Git 冲突问题:合并冲突与解决方法

发布于 2026-04-11 04:24:22 · 浏览 9 次 · 评论 0 条

Git 冲突问题:合并冲突与解决方法

Git 冲突通常发生在两个分支修改了同一文件的同一行代码,或者一个分支修改了文件而另一个分支删除了该文件时,Git 无法自动判断应该保留哪一部分修改。

以下流程图展示了冲突产生的典型场景:

graph LR A["原始提交: v1.0"] B["功能分支: 修改标题"] C["主分支: 修改标题"] A --> B A --> C D["尝试合并功能分支"] --> E{"检测到同一行修改?"} E -- 是 --> F["产生冲突: 需人工介入"] F --> G["手动解决并提交"] E -- 否 --> H["自动合并成功"]

识别冲突标记

当 Git 提示发生冲突时,打开报错的文件,你会看到特殊的标记符号。这些标记将冲突的内容分为三个部分:当前分支的修改、分隔符、合并分支的修改。

标记符号 含义说明
<<<<<<< HEAD 当前分支(你所在的分支)的修改内容开始标记
======= 分隔符,区分上方当前分支与下方合并分支的代码
>>>>>>> branch_name 合并分支(你要合并进来的分支)的修改内容结束标记

查看下方代码块示例,理解冲突在文件中的实际样子:

<<<<<<< HEAD
var color = "red";
=======
var color = "blue";
>>>>>>> feature/login

方法一:使用命令行手动解决

这种方式适用于所有环境,是最基础的解决手段。

  1. 切换 到发生冲突的项目目录下,打开 终端或命令行工具。
  2. 输入 git status 查看 状态,Git 会列出所有产生冲突的文件(通常标记为 both modified)。
  3. 使用 编辑器(如 VS Code、Vim、记事本)打开 冲突文件。
  4. 搜索 文件中的 <<<<<<< 符号,定位 冲突区域。
  5. 分析 代码差异,决定是保留“当前分支”的代码,保留“合并分支”的代码,还是将两者融合编写新的逻辑。
  6. 删除 所有的冲突标记(即 <<<<<<<=======>>>>>>> 这三行),确保文件中只保留你最终想要的代码。
  7. 保存 文件并关闭 编辑器。
  8. 输入 git add <filename> 暂存 该文件,这相当于告诉 Git “我已经解决好这个文件的冲突了”。(如果是解决完所有冲突,可以直接使用 git add .)。
  9. 输入 git commit 完成 合并提交。注意,此时不要修改提交信息,直接保存并退出默认的 merge 信息即可,或者根据需要修改 为更明确的说明。

方法二:使用 VS Code 图形化解决

如果你使用 VS Code,它提供了直观的冲突解决界面,无需手动处理标记符号。

  1. 打开 VS Code,在左侧资源管理器中找到 标记为黄色感叹号 ! 的冲突文件。
  2. 点击 该文件打开编辑器,代码上方会出现一个操作栏,提示 “Accept Current Change”(接受当前更改)、“Accept Incoming Change”(接受传入更改)或 “Accept Both”(两者都接受)。
  3. 点击 Accept Current Change 如果你只想保留你当前的代码。
  4. 点击 Accept Incoming Change 如果你只想保留合并进来的代码。
  5. 点击 Accept Both 如果你想同时保留两段代码(之后可能还需要手动调整逻辑)。
  6. 检查 代码确保逻辑无误。
  7. 按下 Ctrl + S 保存 文件。VS Code 通常会自动识别文件已解决并将其标记为已暂存。
  8. 点击 左侧源代码管理图标,输入 提交信息并点击 对勾按钮完成提交。

紧急情况:放弃合并

如果你在解决冲突时觉得乱了套,想回到合并前的状态,可以执行放弃操作。

  1. 确保 你没有执行 git addgit commit
  2. 输入 git merge --abort
  3. Git 将重置 到你执行合并命令之前的状态,所有冲突标记都会消失,工作目录恢复干净。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文