開發規模不大,結合比較正式的規範做了一些簡化
基本概念
常設分支
- master - 主分支,用於正式釋出
- develop - 開發分支,用於建立新開發feature分支
臨時分支
-
feature/*** - 任務開發分支
-
release - 預釋出分支
-
hotfix/*** - 線上熱修分支
這三種分支都屬於臨時性需要,使用完以後,應該刪除,使得程式碼庫的常設分支始終只有Master和Develop。
環境
正式環境:production
測試環境:testing
開發環境:development
分支說明
master(主分支)
master
為主分支,用於部署到正式環境production
,一般由release
或hotfix
分支合併,所有提供給使用者使用的正式版本,都在這個主分支上釋出,任何情況下不允許直接在master
分支上修改程式碼。
develop(開發)
develop
為開發分支,始終保持最新完成以及 bug 修復後的程式碼,可根據需求大小程度(工時是否小於一天)確定是由 feature 分支合併,還是直接在上面開發。
持續整合、最新隔夜版本的生成等都是基於這個分支。
release(預上線分支、預釋出分支)
release
為預上線分支,用於部署到測試環境testing
,釋出正式版本之前(即合併到Master分支之前),我們可能需要有一個預釋出的版本進行測試。從master或develop拉取,測試完成merge回master和develop。
如果 存在 未測試完畢的需求,就基於master
建立。
如果 不存在 未測試完畢的需求,就基於develop
建立。
不建議直接在release
分支上直接修改程式碼。
feature 分支
feature
為需求開發分支,從develop拉取,開發feature完成,merge回develop,一旦該需求上線,便將其刪除。
hotfix(線上熱修分支)
hotfix
為緊急修復分支,從master拉取,修復並測試完成merge回master和develop,一旦修復上線,便將其刪除。
基本流程
- 每開發一個新功能,建立一個
feature
分支,多人在此分支上開發; - 提測時,將
master
分支和需要提測的分支彙總到一個release
分支,釋出測試環境; - 發現bug時,在
feature
分支上debug後,再次回到2; - 釋出生產環境後,將
release
分支合併到master
分支,刪除release
分支。
命令列示例:
# 1 從develop分支建立feature分支
git branch -b feature/branch-test develop
# 2-1 從master或develop分支(具體條件看上文,這裡選擇master)建立release分支
git branch -b release master
# 2-2 切換到release分支,把feature/branch-test分支合併到release分支
git checkout release
git merge feature/branch-test
# 4-1
git checkout master
git merge release
# 4-2 刪除feature和release分支(本地)
git branch -d feature/branch-test
git branch -d release
刪除分支:
# 清除本地remote
git remote prune origin
# 刪除本地分支(-D為強制刪除)
git branch -d|-D [branchName]
# 刪除遠端分支
git push origin --delete [branchName]
其他場景
釋出測試環境(release分支)
-
確認要釋出的feature 分支上的功能是否開發完畢並提交;
-
建立release 分支(釋出分支),將所有要釋出的分支逐個合併到release分支,有如下情況:
-
feature分支(可能有多個)
-
master分支(期間可能有其他release版本更新到了master)
-
命名規則(可選):release-分支建立日期-新特性和待發布版本號
-
釋出到測試環境,通知測試;
-
測試完成後刪除本次釋出的所有feature分支。
修復待發布版本中的Bug(feature分支)
如果發現bug,開發人員在 feature 分支上修復測試人員提交給自己的bug,修復完成後,合併到 release 分支,釋出測試環境。
釋出正式環境
-
根據修復後的release分支再次將master合併,打包釋出生產環境;
-
確認釋出成功,併線上驗收透過後,將release分支合併到master分支;
-
在master分支上建立標籤(可選),命名規則:tag-日期-新特性和版本號,版本可根據需要新增,作為發版里程碑標記;
-
刪除對應release 分支。
修復線上Bug(hotfix分支)
-
從master 分支某個tag 上建立一個 hotfix 分支(熱修復分支),一般是最新的tag應該和當前生產環境對應;
-
開發人員完成Bug 修復,提交hotfix分支到測試環境驗收透過;
-
再次釋出正式環境流程;
-
將 hotfix 分支合併到 master 分支;
-
在master分支上建立標籤(可選),命名規則:tag-日期-新特性和版本號,版本可根據需要新增,作為發版里程碑標記;
-
刪除 hotfix 分支。