Git 教程 - Rebase

Jinku Hu 2024年2月15日
  1. 什么是 rebase
  2. Rebase 工作流程
  3. rebase 黄金规则
Git 教程 - Rebase

我们已经介绍了基本的合并策略,

  • 快进合并
  • 三向(递归)合并

在本教程中,我们将介绍 Git 的一个最重要的特性 - rebasing (变基)。

什么是 rebase

rebase 意味着你会更改分支提交的参考-祖先,或者换句话说,你正在将分支的祖先重置为你计划合并的分支的最近提交,例如 master 分支。

让我们看看具体的例子,

Git Feature Branch

图中我们有 masterFeature 分支,虽然我们在 Feature 分支工作,但有些人继续做会对 master 分支进行新的提交。

我们希望在将它们合并回 master 之前,将我们的分支提交的参考祖先重置为 master 的最新提交,当我们运行 rebase 命令后,它会更改我们的测试分支的祖先指向 C3 而不是之前的 C1。下图显示了变基后发生的情况。

Git Feature Branch

当我们合并更改时,它只需要再次进行快进合并,因为分支是基于 master 的最新提交。这就是为什么 rebasing 是 git 最强大的功能之一。

在你把变基后的 Feature 分支合并到 master 之后,提交日志图将会如下所示,

Git log graph after rebasing

看起来 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 分支作为他们工作分支的祖先。

作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 创始人。Jinku 在机器人和汽车行业工作了8多年。他在自动测试、远程测试及从耐久性测试中创建报告时磨练了自己的编程技能。他拥有电气/电子工程背景,但他也扩展了自己的兴趣到嵌入式电子、嵌入式编程以及前端和后端编程。

LinkedIn Facebook