[版本控管] 03-使用 Merge 和 Rebase 合併的差異
情境
在團隊開發中,經常會遇到這樣的情況:當你在某個分支上進行開發並準備推送(push)你的 commit 時,發現同一分支上已經有其他人的 commit 被推送上去了。在這種情況下,你無法直接推送自己的 commit,因為會產生衝突。此時有兩種常見的解決方法:Merge 和 Rebase,這兩者都可以用來整合你和其他人所做的程式變更。
Merge 和 Rebase
Merge
Merge 是將另一個分支的變更合併到你當前的分支。Merge 會保留兩個分支的歷史紀錄,並且會產生一個新的 commit,記錄此次合併過程。
- 主要特點:會紀錄合併歷史、衝突檔案。合併的結果會產生一個新的合併 commit,這個 commit 是兩條分支的「交點」。
使用 Merge
- Pull 遠端程式,合併進本地本
- 可能需要解決衝突
- Merge 後會有「交點」
Rebase
會重新改變本地 Commit 點的基準點,變成以遠端最新的異動點為基準,本地 Commit 會變成最新異動點的下一個點,也就相當於整合自己與他人的程式。
- 主要特點:保持分支線簡潔,不會產生額外的合併 commit。
使用 Rebase
- 對著遠端的 Commit 點選 Rebase
- 可能需要解決衝突
- 解決完衝突,完成 Rebase
- Rebase 完不會有交點,也不會有衝突紀錄