【Git 協作相關 #3】git rebase - 實際操作,把在 dev branch 的 commit 與 master 同步更新,並解 conflict

前言

協作最重要的合併功能,不外乎 merge 或 rebase
這一篇我們專注於 rebase

說明

rebase 的使用情境就是如果我們很努力的在 dev branch 開發,
但大家一起合作的 master 可能有很多的更新 (新的 merge),
我們也想要同步進行更新一些新的 change,就需要 rebase

效果

同上面的說明,大家一起做的 master,與你在 a 時間點切出去的 dev
後來 master 又更新了很多 bcd…

我也想要 bcd,且維持我繼續開發的狀態,這時候就需要 rebase,
結果大概如下 (注意只發生在 dev)

實際範例

step 1. 切到 dev

git checkout <your_dev_branch>

step 2. git rebase master,表示拉 master (從我們切出去後的所有更新)

git rebase <your_master_branch>

step 3-1. (運氣好就不用) 看有沒有 conflict 需要解

這裡提供一個要解 conflict 的範例

  • dev 上: 123456
  • master 上:123abc

因為不知道要怎麼樣的順序自動合併,勢必要解 conflict

基本上調整確定是自己想要的樣子就好了

step 3-2. 解完 conflict 後,記得 git rebase –continue

表示告訴 rebase 我解完了請繼續

  • 這裡可能有的步驟
git add <confilct_file>
git rebase --continue

就解完了,就會變成下面這樣圖的狀態
(目前自己在最後一個 commit,master 的所有更新都合併到 dev branch)。

Reference