規範化管理代碼庫分支有助於版本庫在演進過程中始終保持簡潔,主幹結構清晰。各個分支各司其職,有利於後續的維護更新,避免版本發佈帶來的混亂問題。
參閱資料
《A successful Git branching model》
以下爲Git分支開發規範的簡單總結
分支結構
主要分支
master
- 主分支,用於部署生產環境的分支,需確保master分支穩定性
- master分支存儲了正式發佈的歷史
- 屬於只讀唯一分支,只能從其它分支(如develop,hotfix)合併,不能直接在此修改
- 所有向master分支的Push推送都應當打TAG標籤做記錄,方便追溯
develop
- 開發分支,基於master分支檢出的平行分支
- develop分支始終保持最新完成以及bug修復後的代碼
- 屬於只讀唯一分支,只能從master以外的分支(如feature,hotfix)合併,不能直接在此修改
下爲master和develop平行分支示意圖:
支持分支
feature(官方亦稱topic)
- 功能分支,基於develop分支檢出,用於新功能的開發
- feature分支可同時存在多個,用於團隊中多個功能同時開發
- 命名規則:
feature/*
,如feature/shopping_cart,feature/user_login - 屬於臨時分支,最終會被合併回develop(作爲新版本功能)或丟棄(放棄功能),最後可選刪除
- feature通常僅存在於開發人員存儲庫中(本地庫),而不存在於遠程origin
下爲feature分支應用示意圖:
release
- 發佈分支,基於develop分支檢出,用於準備發佈新階段版本
- 用於Bug測試及修復,文檔生成和其它面向發佈任務 修復後
- 也屬於臨時分支,最終會先被合併到master(發佈新版本),打TAG標籤,再被合併到develop,最後可選刪除
- 命名規則:推薦爲
release-*
或release/*
,如release-1.0
下爲release分支應用示意圖:
hotfix
- 補丁分支,基於master分支檢出,用於對線上發佈的版本進行BUG修復
- 屬於臨時分支,最終會先被合併到master(發佈新版本,亦稱修復版本),打TAG標籤,再被合併到develop,可選刪除
- 命名規則:推薦爲
hotfix-*
或hotfix/*
,如hotfix-1.0.1
下爲hotfix分支應用示意圖:
最後
推薦使用對Git Flow很好應用的圖形工具SourceTree,可以幫助我們很好的理解和管理git分支。
下圖爲SourceTree工作流默認配置: