學習筆記 : Git Rebase 和 Merge 合併差異
前言
開始進入公司實習後,就真的需要去使用到Git版本控制啦!雖然之前寫過了一些練習筆記,但知道基本觀念跟實際上場果然還是有差,常常老闆說的我都霧煞煞@@ 所以打算把聽到的一些概念,寫成筆記記錄下來。
• 工作流程介紹
通常工作時我們會需要開一個新分支去完成不同作業,而在最後完成時便要把分支合併回去,這時就可以使用Merge或Rebase的方式。如下圖,現在我們在B節點的位置,開了一個新的分支bugfix去做其他修改,最後修改到Y點時想再把內容合併回master分支。
• 使用Merge合併
當使用Merge的方式去做合併時,它會以遠端當前最新的節點和你現在的位置合併,判斷有沒有衝突後,額外在master分支生成一個新的節點。這樣的缺點是當每一次merge都會產出一個新的merge commit,使得修改歷程紀錄多了許多不必要的commit。
• 使用Rebase合併
當使用Rebase的方式去做合併時,它會將開始分支的共同節點位置(B點)後所提交的commit整條分支接回master分支後面。使用這樣的方式就不會額外生成新的節點,看裡來也比較清楚直觀。
需要注意的是,當merge合併時,它是在針對Y節點提交內容和master解衝突,而使用rebase的話,它會需要針對每一次的commit去各自解衝突。
總結來說
Merge 修改內容的歷史記錄會維持原狀,但是合併後的歷史紀錄會變得更複雜。
Rebase修改內容的歷史記錄會接在要合併的分支後面,合併後的歷史記錄會比較清楚簡單,但是,會比使用 merge 更容易發生衝突。
學習參考:連猴子都能懂的Git入門指南