假设当前开发过程中 master 分支开发并提交了 C3,experiment 分支开发并提交了 C4,如下图所示
变基的思想:你可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上再应用一次。在 Git 中,这种操作就叫做 变基。你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新 播放”一样
上图中运行如下命令:
git checkout experiment
git rebase master
它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交 C4,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。
变基之后的结果如下图所示:
将 C4 中的修改变基到 C3 上
现在回到 master 分支,进行一次快进合并
git checkout master
git merge experiment
执行完上述命令后如下图所示