前言
經過產品不斷的折磨,終于形成成熟的分支管理規范。在此分享給大家。
按照項目開發流程,假定由 xiaoHong 和其他 X 位同事負責 1.1.0 版本的研發工作,每個階段分支管理如下:
階段一 : 開發周期
- 主開發分支:從 develop 分支創建 feature/1.1.0 分支(若沒有 develop 分支則從 master 分支創建)。
- 模塊開發分支:從主分支 feature/1.1.0 創建自己的模塊開發分支 feature/1.1.0-kyc。模塊開發完成后合并到主開發分支 feature/1.1.0。
- 個人開發分支:從模塊開發分支 feature/1.1.0-kyc 創建自己的開發的分支 feature/1.1.0-kyc-xiaoHong。開發完成后合并到模塊開發分支 feature/1.1.0-kyc。
備注:如果是多模塊開發,需要單獨建立模塊分支,減少代碼耦合。方便按需上線單獨模塊。
階段二 : 測試周期
- 主開發分支:將 feature/1.1.0 合并到 develop 分支, 然后從 develop 分支創建 release/1.1.0 分支。
- 個人開發分支:從 release/1.1.0 創建自己的開發分支 release/1.1.0-xiaoHong。開發完成后合并到主開發分支。
階段三 : 版本發布
- 從 release/1.1.0 發布版本,發布后將 release/1.1.0 分支合并到 master 和 develop 分支,并在 master 分支打 1.1.0 的 tag。
階段四 : 線上緊急修復
- 主開發分支:從 1.1.0 的 tag 創建主開發分支 hotfix/1.1.0 分支。
- 個人開發分支:從 hotfix/1.1.0 分支創建 hotfix/1.1.0-xiaoHong 個人開發分支,開發完成后合并到主開發分支。
- 使用 hotfix/1.1.0 分支發布緊急修復版本,發布后合并到 master 分支,并打 tag。
總結
- 每位開發要基于個人分支開發,不可使用主開發分支
- 常用分支類型與意義:
master : 每次發布版本
develop : 開發分支
feature/x.x.x : 開發周期主分支
release/x.x.x : 測試周期主分支
hotfix/x.x.x : 緊急修復主分支
- commit log 要寫完整的變更內容,根據類型添加前綴
功能變更:feat:xxx
Bug修復:fix:xxx
功能優化:opt:xxx
- 版本發布后要及時合并代碼到 master 分支,并打 tag
- 及時清理不再使用的分支
意義
- 清晰的分支樹,方便版本管理
- 模塊間減少耦合,可單獨上線完成開發的模塊
- 歷史版本和修改追溯