Git 分支管理規範
初始化 Git 倉庫
創建遠程倉庫的步驟略過。
第 0 步: 克隆遠程倉庫(可選)
命令示例,
git clone <倉庫地址>
第 1 步: 提交併推送初始版本
在 Gitlab 系統中設置 master 分支爲 Protectd 分支,Protected 分支不允許 Developer 推送代碼,但 Maintainers 可以推送代碼。
命令示例,
# 提交本地修改:
git add .
git commit –m "提交日誌"
# 推送 master 分支:
git push origin master
第 3 步: 創建開發分支
在 master 分支上創建 dev 分支(開發分支),並推送至 Gitlab。master 分支與 dev 分支一樣,有且僅有一個,
命令示例,
# 從 master 分支上創建 dev 分支:
git checkout –b dev master
# 推送 dev 分支:
git push origin dev
開發新功能
開發人員在 dev 分支上實現新功能,包括: 新特性與 Bug Fix
命令示例,
# 切換到 dev 分支:
git checkout dev
# 提交本地修改:
git add .
git commit –m "提交日誌"
# 推送 dev 分支:
git push origin dev
若存在多個新特性可以並行開發,則可創建一個或多個 feature 分支(特性分支),命名規範: feature-分支創建日期-新特性關鍵字
,例如: feature-v20201002-compliance
當新特性開發完畢後,需將 feature 分支合併到 release 分支,最後需刪除 feature 分支。
命令示例,
# 從 release 分支上創建 feature 分支:
git checkout –b feature-v20201002-compliance release
什麼時候需考慮使用 feature 分支?
- 開發一個獨立的新特性(完成時,需合併到 dev 分支)
- 技術研究與嘗試(若失敗,可隨時刪除 feature 分支)
- 提前實現下一個版本需要開發的特性(可不在本次迭代中發佈)
推薦使用 feature 分支,但 feature 分支的生命週期不能跨一次迭代。
常規版本發佈
提測與準備
- 確認提測分支(feature/bug fix)上的功能是否開發完畢;
- 若開發完畢,填寫並提交提測工單給測試,並提交 merge request 到 release 分支;
- 測試創建 release 測試分支(發佈分支),命名規則: release-分支創建日期-待發布版本號,例如: release-v20201012-1
- 測試修改 merge request 目標分支到本次新建的 release 分支;
- 測試對該 release 分支進行測試
命令示例,
# 從 master 分支創建 release 分支:
git checkout –b release-v20201012-1 master
測試與發佈
第 0 步: 集成測試
- 從 release 測試分支上檢出所有代碼並搭建集成測試環境;
- 安排測試人員,對 release 測試分支進行集成/冒煙測試;
第 1 步: 版本發佈
- 將 release 測試分支同時合併到 release 主分支和 master 分支;
- 在 master 分支上創建標籤,命名規則: hotfix-日期-發佈序號,例如: v20201012-1 或 hotfix-v20201012-1
- 刪除 release 測試分支;
- 上傳 Docker 鏡像;
命令示例,
# 合併 release 測試分支到 release 主分支:
git checkout release
git merge --no-ff release-v20201012-1
git push origin release
# 合併 release 測試分支到 master 分支:
git checkout master
git merge --no-ff release-v20201012-1
git push origin master
# 在 master 分支上創建標籤:
git tag v20201012-1
git push origin v20201012-1
# 刪除本地 release 分支:
git branch –d release-v20201012-1
# 刪除遠程 release 分支:
git push origin :release-v20201012-1
修復待發布版本中的 Bug
開發人員在 release 分支上修復測試人員提交給自己的 Bug。
只允許在 release 分支上修復 Bug,不允許提交任何新特性,這裏需開發主管和測試人員全程監管。
命令示例,
# 切換到 release 分支:
git checkout release-v20201012-1
# 提交本地修改:
git add .
git commit –m "提交日誌"
# 推送 release 分支:
git push origin release-v20201012-1
修復線上 Bug (Hotfix)
第 0 步: 創建 Hotfix 分支
- 從線上版本中上創建一個 hotfix 分支,命名規則: hotfix-分支創建日期-發佈序號,例如: hotfix-v20201012-1;
- 指導開發人員完成 Bug 修復;
- 通知測試對 hotfix 分支進行測試,驗證 Bug 是否修復;
命令示例,
# 從某個標籤上創建 hotfix 分支:
git branch hotfix-v20201012-1 v20200901-1
第 1 步: 發佈新版本
- 將 hotfix 分支同時合併到 master 與 release 主分支;
- 在 master 分支上創建標籤;
- 刪除 hotfix 分支;
- 上傳 Docker 鏡像;
⚠️注: 若 release 主分支存在封版但未發佈上線的代碼,這個未上線的 tag 必須作廢!
命令示例,
# 合併 hotfix 分支到 release 分支:
git checkout release
git merge --no-ff hotfix-v20201012-1
git push origin release
# 合併 hotfix 分支到 master 分支:
git checkout master
git merge --no-ff hotfix-v20201012-1
git push origin master
# 在 master 分支上創建標籤:
git tag hotfix-v20201012-1
git push origin hotfix-v20201012-1
# 刪除本地 hotfix 分支:
git branch –d hotfix-20190919-v1.0.1
# 刪除遠程 hotfix 分支:
git push origin :hotfix-20190919-v1.0.1