分支 (版本控制)

在版本控制與软件配置管理中，分支（）是由某個版本的程式碼或軟體物件中建立複製版本，在分支出來後的兩個版本，可以獨立進行修改。

分支會形成樹狀結構，也被稱為，或。原始的版本，稱為父分支（parent branch）或是上游分支（upstream branch）。分支出來的複本，稱為子分支（Child branches）。作為最源頭，沒有父分支的分支，稱為主幹（trunk）或主線（mainline）。

在分散式版本控制系統（例如）中，分支和存放版本的儲存庫（repository）是一樣的。在這類系統，複製一份儲存庫的複本和分支是一樣的。

軟體進行分支後，之後有可能會再將分支合并回父分支。常見的是將修改內容合併回主幹（有可能主幹不是父分支）。若某個分支不打算合併（例如曾由第三方授權，授權內容不相容，因此已，或是用在不同用途上），會稱為分叉（fork）。

使用分支的原因 
建立分支可以讓各部份的程式碼可以平行開發。大型專案會有不同的參與者，例如開發人員、build管理者，以及软件质量保证人員等。甚至需要維護針對不同作業系統的不同發行版。分支可以讓參與者在不破壞基礎代碼穩定性的情形下，將修改和基礎代碼隔離，再進行程式錯誤修正、新開發、軟件版本整合等。這些修改可以在測試完成後，再合併回主線。

開發分支 
開發分支（development branch）或開發樹（development tree）的程式碼是指正在软件开发，但還沒有正式發行的程式碼。若在开放源代码社群中，「正式發行」不是那麼直覺，因為任何人隨時都可以取出（check out）需要的版本，不管是不是在開發分支中都可以取出。一般而言，最終會是下一個主要版本的分支就是開發分支。不過也常常同時開發多個機能，因此存在多個開發分支。

有些版本控制軟體會針對主要的開發分支有特殊的命名，例如在CVS中稱為MAIN，在git中則稱為master。

陰影分支或魔術分支 
在（開源軟體，整合rPath開發的版本控制系統）及中，可以針對上游的分支建立陰影分支或魔術分支，在小修改的維護上比較方便。

儲存庫的複製 
在分散式版本控制中，可以複製整個儲存庫（以及其中的分支），之後再進行開發。Monotone（mtn）、Mercurial（hg）及git稱為clone。

相關條目
主幹 (軟件)（trunk）
修订标签（tag）

參考資料

版本控制