Git 教程 - Rebase
Jinku Hu
2024年2月15日
我们已经介绍了基本的合并策略,
- 快进合并
- 三向(递归)合并
在本教程中,我们将介绍 Git 的一个最重要的特性 - rebasing (变基)。
什么是 rebase
rebase 意味着你会更改分支提交的参考-祖先,或者换句话说,你正在将分支的祖先重置为你计划合并的分支的最近提交,例如 master 分支。
让我们看看具体的例子,

图中我们有 master 和 Feature 分支,虽然我们在 Feature 分支工作,但有些人继续做会对 master 分支进行新的提交。
我们希望在将它们合并回 master 之前,将我们的分支提交的参考祖先重置为 master 的最新提交,当我们运行 rebase 命令后,它会更改我们的测试分支的祖先指向 C3 而不是之前的 C1。下图显示了变基后发生的情况。

当我们合并更改时,它只需要再次进行快进合并,因为分支是基于 master 的最新提交。这就是为什么 rebasing 是 git 最强大的功能之一。
在你把变基后的 Feature 分支合并到 master 之后,提交日志图将会如下所示,

看起来 Feature 分支好像从未存在过一样,所有提交日志都是在一条直线上。
Rebase 工作流程
-
创建新特性分支
$ git checkout -b Feature
-
修改并且提交新特性分支
$ git add modified.txt
$ git commit -m 'coment here'
-
将新特性分支
rebase
$ git rebase master
-
合并编辑后的新特性分支到
master
$ git checkout master
$ git merge Feature
rebase 黄金规则
rebase 的黄金法则就是永远不要对公共分支进行变基操作。
如果你对一个公共分支变基,但在此操作之后有人还在该分支上工作,那他们将很难将他们的分支合并到 master 上,因为他们仍然使用原始 master 分支作为他们工作分支的祖先。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
