07 解决 Git 合并冲突、回退与 Rebase
1. 解决合并冲突¶
合并冲突通常发生在以下场景:
- 使用 git merge 合并两个分支时,两个分支对同一文件的同一部分进行了不同修改。
- 使用 git rebase 将当前分支的提交应用到目标分支时,遇到冲突。
1.1 合并冲突的解决步骤¶
-
触发冲突: 当执行
输出可能如下:git merge <branch_name>或git rebase <base_branch>时,如果 Git 检测到冲突,会暂停操作并提示冲突文件。例如: -
查看冲突文件: 使用以下命令查看哪些文件有冲突:
输出示例: -
手动解决冲突:
- 打开冲突文件,Git 会用标记(如
<<<<<<<、=======、>>>>>>>)标识冲突部分: - 编辑文件,选择保留哪部分代码,或合并两者,然后删除标记。
-
示例:假设
修改为:file.txt的冲突如下: -
标记冲突已解决: 解决冲突后,将文件添加到暂存区:
-
完成合并:
- 对于
git merge,提交合并结果: Git 会自动生成合并提交信息,或可手动编辑。 -
对于
git rebase,继续变基: -
推送更改(如果需要):
1.2 放弃合并或变基¶
如果冲突复杂或不想继续: - 放弃合并:
- 放弃变基: 这些命令会将分支恢复到操作开始前的状态。1.3 使用工具解决冲突¶
复杂冲突可使用可视化工具(如 IntelliJ IDEA、VS Code 或 GitKraken),它们提供图形界面来选择保留的代码片段。例如,在 IntelliJ IDEA 中:
- 打开 Git -> Resolve Conflicts,界面会显示冲突文件的左右对比。
- 选择“Accept Left”或“Accept Right”,或手动编辑后点击“Apply”。
注意: - 在解决冲突前,建议备份分支:
- 确保理解冲突内容,避免错误删除代码