參考:
一.分支簡述
- 藍圓--主線(master)
- 紫圓--主分支(dev)(生產主線)
- 橙圓--新功能開發主線(feature)
- 綠圓--新版本釋出線(release)
- 紅圓--釋出版本bug修復線(hotfix)
二.工作流程
工作流基礎
專案負責人建立dev分支供團隊開發人員圍繞它進行相關操作
git branch dev
git push -u origin dev
複製程式碼
其他人clone,建立一個dev的軌跡版本
git clone git@github.orgXXXXXXXX
git checkout -b dev origin/dev
複製程式碼
dev這個分支將包含專案的完整歷史記錄,而master僅包含縮略版本。
新功能開發流程
1.新建feature分支
在dev基礎上建立新分支:
git checkout -b feature/demo dev
複製程式碼
推到遠端,(然後這部分新功能程式碼就提交到這個上)
git push
複製程式碼
所有開發此新功能的人員,都在這個分支上開發提交程式碼
git status
git add
git commit -m "Add some-file."
複製程式碼
2.完成新功能開發(合併feature分支到dev上去)
git pull origin dev
git checkout dev
git merge feature/demo
git push
git branch -d feature/demo
複製程式碼
注意
- 新功能分支,永遠不要直接在master上合併,要在dev上進行操作
- 合併時做好衝突合併(webstrom可實現自動合併)
3.測試環境釋出dev分支程式碼(提交測試)
線上版本釋出流程
(1)從dev中建立釋出的release分支
當主測試流程完成,原始碼已經趨於穩定,準備一個釋出版本(確立版本號),並推到遠端
git checkout -b release-1.0 dev
git push
複製程式碼
這個分支是清理準備釋出、 整體迴歸測試、 更新文件,和做其他任何系統即將釋出的事情。
(2)開發交程式碼改bug
(3)release分支合併到master和dev
一旦已經滿足釋出條件(或已經到了預定釋出日期),應該把release分支合併到master分支和dev分支中,然後,使用master釋出新版本。合併release分支到dev分支是很重要的,要讓release上修改的東西能在後續的開發分支中生效。
master
git checkout master
git merge release-1.0
git push
複製程式碼
dev
git checkout develop
git merge release-1.0
git push
git branch -d release-1.0
複製程式碼
(4)打標籤
Release分支在功能開發分支(dev)和公共釋出版(master)中,充當一個緩衝的作用。每當有原始碼合併到master中的時候,應該在master上打一個標籤,以便後續跟蹤查閱。
git tag -a 1.0.RELEASE -m "Initial public release" master
git push --tags
複製程式碼
線上bug修復過程
當使用者反饋系統有bug,需從master基礎上建立並維護hotfix新分支,解決完在合併回master
(1)建立hotfix
git checkout -b issue-#001 master
複製程式碼
(2)修復
(3)完成後合併到master釋出
git checkout master
git merge issue-#001
git push
複製程式碼
(4)打標籤
(5)合併到dev
git checkout develop
git merge issue-#001
git push
複製程式碼
三.小結
- master僅包含縮略版本,dev包含專案完整歷史記錄
- 新增新功能都在dev上新生成分支feature進行操作,然後在合併回dev上
- 版本:在dev上測試流程完成,原始碼趨於穩定時,在dev上建立一個release作為釋出版本號(其實就是master和dev之間的一個緩衝)
- 線上修bug:反饋出bug之後,在master基礎上新建一個分支hotfix,在該hotfix上修好了在合併回master,並同步到dev