Git 教程 - Rebase
我們已經介紹了基本的合併策略,
- 快進合併
- 三向(遞迴)合併
在本教程中,我們將介紹 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
分支作為他們工作分支的祖先。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn