合并、变基与优选
合并(merge)、变基(rebase)与优选(cherry-pick)是 Git 中整合代码变更的核心工具。
它们的目的都是将一个地方的变更应用到另一个地方,但它们的实现方式和对历史记录的影响却截然不同。
合并 merge
合并是将两个分支的终点连接在一起,并且创建一个新的“合并提交”。
合并能够保留完整分支的开发历史,对于团队协作来说是安全和可追溯的。
但是大量的合并会使提交历史变得复杂、难以阅读。
变基 rebase
变基是重写提交历史,将你的分支提交“移动”到另一个分支的末端。
变基追求的是一个线性、干净的提交历史记录,不保留分支开发的历史记录。
优选 cherry-pick
优选能精准地获取其他分支中的某些提交,而不是整个分支。
图示操作变化
初始分支状态
执行合并后
将 feature 合并到 main,保留完整分支的开发历史 O、P、Q,创建新提交 G 用于连接。
操作对比
| 操作 | 历史图谱 | 核心思想 | 历史是否被重写 |
|---|---|---|---|
合并 merge | 分叉与交汇 | 保留真实、并行的开发历史。 | 否(只新增提交) |
变基 rebase | 干净的直线 | 确保历史清晰可读 | 是(创建新提交替代旧的) |
优选 cherry-pick | 复制粘贴 | 按需取用,只拿我需要的变更 | 是(在目标分支创建新提交) |
最后更新于