Git 中整合来自不同分支的修改有两种方式:git merge
和 git rebase
。本文主要介绍 rebase
的3种使用场景:
-
场景1: 使用
rebase
合并分支--整合分叉的提交历史 - 使用
交互式的 rebase
-
场景2: 压缩提交历史
-
场景3: 修改多个提交信息
-
1 使用 rebase 合并分支
1.1 场景描述
我们在 feature
分支开发完新的功能后,通常会通过 merge
操作将代码合并到 master
分支,这样会产生一条分叉。这时可以通过变基使得提交历史更加整洁,看上去就像是串行的一样,提交历史是一条直线没有分叉。
1.2 操作命令
首先在自己的 feature
分支里进行开发,当开发完成时你需要先将你的代码变基到 master
上,然后再向 master
分支提交修改。 这样的话,该项目的维护者就不再需要进行整合工作,只需要快进合并便可。具体操作如下:
# 1 变基到 master
git checkout feature
git rebase master
# 2 回到 master 分支,进行一次快进合并。
git checkout master
git merge feature
1.3 原理图解
假设在你的项目上 master
分支的提交为 C0、C1、C2、C3
,基于 master
的 C2
节点拉出了一个 feature
分支,并产生了新的提交C4
,如下图:
16-1
整个变基操作的过程如下图所示,首先找到这两个分支(即当前分支 feature
、变基操作的目标基底分支 master
) 的最近共同祖先 C2
,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支(feature