Never Nop Tech

Never Nop Tech

分享軟體、旅遊、生活。

git rebase用法紀錄

這是最近寫專案時發現的git用法,因為好用所以就來記錄一下!

git rebase 是一個合併程式碼用的指令,以我這個外行人第一次用來說像是插枝合併的感覺!

把一個分支中的修改整合到另一個分支的辦法有兩種:merge 和 rebase(譯注:rebase 的翻譯暫定為“衍合”)。

如圖1所示,從某個支點開出的分支,在瞄準一個目標點,不斷的插枝上去。

我以ae419b3這commit開出新分枝,並更改檔案內容,利用git rebase origin/master進行衍合,因為目標是origin/master(即20937a4),所以連回去找origin/master的那條線,首先找到commit ae419b3,從他的下一筆20937a4進行整合,在整合途中就是修掉衝突(conflicts),再繼續下一個插枝,一直到rebase的目標commit(在此即是20937a4)為止。

圖1

rebase的好處是能夠在合併時減少額外代碼的添加,比merge好多(但缺點是如果在公開分支、多人協作下就容易發生錯亂的問題)rebase通常用於揀選需要的檔案,最後pull request再用merge推上主線。


稍微整理一下:

一個人工作
私有分支
本地內容
用rebase

–vs–

多人協作
公開分支
公開內容
用merge


指令:

git rebase 目標

以目標為基底rebase

git rebase –continue

繼續下一筆commit來rebase

git rebase –skip

跳過這筆commit以下筆commit rebase

參考資料:

https://www.zhihu.com/question/36509119

https://zlargon.gitbooks.io/git-tutorial/content/branch/rebase.html

https://git-scm.com/book/zh-tw/v1/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E8%A1%8D%E5%90%88