在多組員、多項目、多環境進行協同工做時,若是沒有統一規範、統一流程,則會致使額外的工做量、出現版本混亂或代碼覆蓋。因此要減小版本衝突,減輕沒必要要的工做,就須要規範化的工做流程。git
新功能分支(Feature Branches)github
每個新的功能或者下一個迭代的任務,都應該建立一個獨立的功能分支,從develop分支中派生出來。當功能完成後,要合併(merged)回develop分支,合併後它的生命週期就結束,能夠刪除。新功能分支不會與master分支有直接的交匯。如圖: 服務器
發佈分支(Release Branches)maven
一旦開發的功能已經知足發佈條件(或預約發佈日期接近),應該合併全部知足發佈條件的新功能分支到develop分支中,而後,開出一個發佈分支(Release),開始準備一個發佈版本。Release這個分支上不能再添加新的功能,只有bug修復和該版本爲導向的任務。一旦到了發佈日期,Release就要合併回master發佈,而且打出版本標籤。另外還須要合併回develop分支,保證develop分支是最新的. ide
使用一個專門的分支來準備發佈版本,使得一個團隊能對當前版本進行拋光,而另外一個團隊繼續爲下一個版本的功能作準備。它還創造了良好定義的發展階段(例如,很容易說,「本週咱們正在準備4.0版」,並且真實地看到它在庫中的結構)工具
維護分支(Maintenance Branches)測試
維護分支也就是線上bug修復分支,使用來快速修復生產環境的緊急問題 ui
這個分支是惟一一個開放過程當中直接從master分支派生來的分支。快速的修復問題後,它應該被合併回master和develop(或者當前發佈分支),而後,master分支須要打一個版本標籤。idea
下面具體演示如何使用工做流來管理版本發佈週期。假設咱們已經存在或建立了一個源碼中央存儲倉庫,默認建立了master分支。版本控制
7.1 建立develop分支
git branch develop git push -u origin develop
git clone git@github.org:search-cloud/demo.git git checkout -b develop origin/develop
develop這個分支將包含項目的完整歷史記錄,而master將包含縮略版本。
7.2 新建feature分支
git checkout -b feature/demo develop
git push
git status git add git commit -m "Add some-file."
7.3 完成新功能開發(合併feature分支到develop)
當肯定新功能開發完成,且聯調測試經過,而且新功能負責人已經獲得合併feature分支到develop分支的容許;這樣才能合併feature分支到develop. (若是有兩個新功能同時在開發,前一個功能合併到develop,但尚未發佈到release,而且下一個版本又不在這個週期發佈.則第二個功能不能合併到develop,不然會出現兩個新功能同時要發佈到release)
git pull origin develop git checkout develop git merge feature/demo git push git branch -d feature/demo
第一條命令是確保在合併新功能以前,develop分支是最新的
注意:
7.4 在測試環境發佈develop分支代碼(提交測試),也能夠跳7.5建立release分支提測
7.5 線上版本發佈流程
從develop中建立準備發佈的release分支
當主測試流程完成,源碼已經趨近於穩定狀態,應該準備一個發佈版本,確立版本號,並把master代碼合併到release發佈版,確保release是要發佈的最新的代碼
git checkout -b release-0.1.0 develop git merge master git push
這個分支是清理準備發佈、 總體迴歸測試、 更新文檔,不能在此分支添加與本次無關的新功能
一旦已經知足發佈條件(或已經到了預約發佈日期),應該把release分支合併到master分支和develop分支中,而後,使用master發佈新版本。合併release分支到develop分支是很重要的,要讓release上修改的東西能在後續的開發分支中生效。
git checkout master git merge release-0.1.0 git push
git checkout develop git merge release-0.1.0 git push git branch -d release-0.1.0
Release分支在功能開發分支(develop)和公共發佈版(master)中,充當一個緩衝的做用。每當有源碼合併到master中的時候,應該在master上打一個標籤,以便後續跟蹤查閱。
git tag -a 0.1.0.RELEASE -m "Initial public release" master git push --tags
7.6 線上Bug修復流程 當終端用戶,反饋系統有bug時,爲了處理bug,須要從master中建立出保營養支;等到bug修復完成,須要合併回master/develop:
git checkout -b issue-#001 master
git checkout master git merge issue-#001 git push
git tag -a 0.1.1.RELEASE -m "Initial public release" master git push --tags
git checkout develop git merge issue-#001 git push