在使用 Git 合并分支时,如果遇到冲突(Conflict),需要手动解决冲突后再完成合并。以下是详细步骤:
---
### **1. 确认冲突**
当运行 `git merge <分支名>` 出现冲突时,Git 会提示:
```
Auto-merging <文件名>
CONFLICT (content): Merge conflict in <文件名>
Automatic merge failed; fix conflicts and then commit the result.
```
---
### **2. 查看冲突文件**
- 使用 `git status` 查看冲突文件列表,标记为 **Unmerged paths**。
- 打开冲突文件,会看到类似标记:
```plaintext
<<<<<<< HEAD
当前分支的修改内容(例如 master 分支)
=======
合并分支的修改内容(例如 feature 分支)
>>>>>>> feature
```
- `<<<<<<< HEAD` 到 `=======` 之间是当前分支的内容。
- `=======` 到 `>>>>>>> feature` 之间是要合并的分支的内容。
---
### **3. 手动解决冲突**
- **编辑冲突文件**,保留需要的代码(删除冲突标记 `<<<<<<<`, `=======`, `>>>>>>>`)。
- 例如,将冲突部分修改为:
```plaintext
最终合并后的内容
```
---
### **4. 标记冲突已解决**
- 将修改后的文件添加到暂存区:
```bash
git add <冲突文件名>
```
- 如果有多个冲突文件,可一次性添加所有修改:
```bash
git add .
```
---
### **5. 完成合并提交**
- 提交解决后的结果:
```bash
git commit -m "Merge branch 'feature' and resolve conflicts"
```
- Git 会自动生成合并提交信息,也可直接使用默认信息。
---
### **6. 其他相关命令**
- **取消合并**(回到合并前的状态):
```bash
git merge --abort
```
---
### **工具辅助解决冲突**
- **图形化工具**(推荐新手使用):
- **VS Code**:内置的 Git 工具会高亮冲突,支持一键选择保留哪部分代码。
- **GitKraken**、**SourceTree**、**Meld** 等工具提供可视化冲突解决界面。
- **命令行工具**:
```bash
git mergetool
```
---
### **总结流程**
```bash
# 合并分支
git merge feature-branch
# 发现冲突后,手动修改文件
git status # 查看冲突文件
vim conflict-file.txt # 手动解决冲突
# 标记解决并提交
git add conflict-file.txt
git commit
```
通过以上步骤即可解决合并冲突。记得在解决后验证代码功能是否正常!