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