1. 程式人生 > >Git分支演進-重定基底 rebase

Git分支演進-重定基底 rebase

此為Pro Git讀書筆記,博文圖片均轉載自書中,但本文和Pro Git均為開放免費的,
未曾商業之用!

rebase翻譯為“重定基底”,其和merge一樣屬於合併多個分支的操作,但是稍微有些不同。

這裡有兩個分支:
在這裡插入圖片描述

現在想合併這兩個分支,假如沒衝突,merge動作會新建一個節點,把C3和C4的改變都新增進去。

在這裡插入圖片描述

rebase既然是重定基底,那麼就是改變原來的基,其實這裡的基就是前驅節點的意思。
比如:C2的前驅節點是C1,C1是被箭頭指向的節點,代表C2C1的基礎上工作。

那麼能不能將C4直接移動到C3的後面,不建立新的節點呢?當然可以,就是用rebase

在這裡插入圖片描述

接下來再直接合並分支experimentmaster,那麼這個操作就是合併操作就是快速轉發型的了。

rebase操作我認為一般不常用,不過其優點就是減少git log產生的日誌比較好看,就好像經過序列開發過程留下的日誌一樣,可以從上圖中看到。

但是rebase操作因為改變了節點的基,所以不要在分支上commit了幾個節點到遠端,然後再rebase。因為有可能你的工作會干擾別人的工作。一句兩句說不清楚,具體參見上書。但是如
果不想過於複雜,又非常想很安全的使用rebase,那就遵循一個原則:

永遠在本地使用rebase,然後清理掉被rebase的分支,這樣git歷史會相當清白