Git Merge
合并是 Git 中将不同分支的更改整合到一起的核心操作。本章将详细介绍各种合并策略、冲突解决和最佳实践。
合并基础概念
什么是合并?
合并是将一个分支的更改集成到另一个分支的过程。Git 提供了多种合并策略来处理不同的场景。
合并的类型
- 快进合并 (Fast-forward):目标分支没有新提交
- 三方合并 (Three-way merge):两个分支都有新提交
- 压缩合并 (Squash merge):将多个提交压缩为一个
基本合并操作
准备演示环境
快进合并
当目标分支(通常是 main)没有新的提交时,Git 会进行快进合并:
输出:
快进合并的特点:
- 不创建新的合并提交
- 历史保持线性
- 分支指针直接移动
禁用快进合并
三方合并
创建三方合并场景
Git 会自动创建合并提交:
自定义合并提交信息
合并策略
递归策略 (Recursive)
这是 Git 的默认合并策略,适用于大多数情况:
Octopus 策略
用于合并多个分支:
Ours 策略
保留当前分支的内容,忽略其他分支的更改:
Subtree 策略
用于子树合并:
处理合并冲突
识别冲突
当两个分支修改了同一文件的同一部分时,会产生冲突:
冲突输出:
查看冲突状态
冲突标记解释
冲突文件会包含特殊标记:
标记说明:
<<<<<<< HEAD:当前分支的内容开始=======:分隔符>>>>>>> branch-name:合并分支的内容结束
手动解决冲突
使用合并工具
冲突解决策略
高级合并操作
压缩合并 (Squash Merge)
将功能分支的所有提交压缩为一个提交:
压缩合并的特点:
- 保持主分支历史简洁
- 丢失功能分支的详细历史
- 适合功能完整后的合并
部分合并
合并特定提交范围
撤销合并
撤销未推送的合并
撤销已推送的合并
查找合并提交
合并最佳实践
1. 合并前的准备
2. 选择合适的合并策略
3. 编写清晰的合并信息
4. 合并后的清理
合并工作流
GitHub Flow
Git Flow
合并工具和技巧
配置合并工具
合并别名
自动化合并脚本
故障排除
常见合并问题
合并性能优化
合并分析和报告
合并统计
生成合并报告
总结
Git 合并的核心要点:
基本操作
冲突处理
- 🔍 识别冲突文件和位置
- ✏️ 手动编辑或使用合并工具
- ✅ 标记冲突已解决并提交
- 🚫 必要时取消合并
最佳实践
- ✅ 合并前确保分支是最新的
- ✅ 选择合适的合并策略
- ✅ 编写清晰的合并信息
- ✅ 合并后及时清理分支
工作流选择
- 简单项目:直接合并
- 团队协作:Pull Request 流程
- 复杂项目:Git Flow 或 GitHub Flow
掌握合并操作后,你就能够:
- 🔄 安全地整合不同分支的更改
- 🛠️ 有效处理合并冲突
- 📈 维护清晰的项目历史
- 👥 支持团队协作开发
在下一章中,我们将学习 Git Flow 工作流程。