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