Git 中【三路合併】指令 (Fast-forward Merge) | Git

在軟體管理版本中,Git是一個極為重要且普遍使用的版本控制工具。當多個開發者在同時修改同一個檔案時,可能會導致程式碼混亂並產生衝突。而Git中的三路合併(Three-way Merges)機制,就是為了解決這種衝突而存在的工具。

三路合併的原理相當精巧,它同時考慮了三個版本的內容:基底版本(Base Version)、目前所在的分支版本(Branch Version)、以及欲合併的目標版本(Target Version)。讓我們透過一個簡單的範例來解釋這個概念。

簡易範例:

假設我們有一個名為feature的分支和master分支。在feature分支上進行了一些修改,現在我們想將這些更改合併到master分支中。

  1. 共同祖先(Common Ancestor) :首先,Git會找到這兩個分支的共同祖先,即它們分開的起點。這是合併過程中的基準點。
  2. 目標分支(Target Branch) :然後,Git會比較目標分支(在我們的例子中是master)與共同祖先之間的差異。
  3. 來源分支(Source Branch) :接著,Git會比較來源分支(feature)與共同祖先之間的差異。
  4. 合併(Merge) :最後,Git將這兩組差異合併到目標分支上,生成一個新的合併結果。

圖示:

      Common Ancestor
         /      \
        /        \
       /          \
      /            \
   feature         master
(Target Branch)   (Source Branch) 
      \            /
       \          /
        \        /
         \      /
         Merge Result
  1. 確保在來源分支上
git switch master
  1. 執行合併命令
# 一般合併指令
git merge feature

# 更好的做法,Git會創建一個新的合併提交,即使可以被快轉合併(fast-forward)
# --no-ff選項代表"no fast-forward"
git merge --no-ff feature

在圖示中,左側是目標分支與共同祖先的比較,右側是來源分支與共同祖先的比較。合併結果顯示在最下方。

如果沒有衝突,合併過程就會順利完成。但若有衝突,Git會提示用戶手動解決衝突。透過這樣的機制,Git讓程式碼的合併過程變得更加順暢和自動化,提高了開發者的效率。

Git中的三路合併在大型團隊協同合作中是很常見的合併指令。希望這篇文章能幫助你更好地理解和應用Git中的三路合併機制!