集中式工做流git
功能分支工做流github
Gitfow工做流ide
根據Vincent Driessen的文章描述,git flow 的工做流程圖以下:svg
git flow 的主要分支有兩個,master和trunk。這兩個分支是長期維護的,而且這兩個分支的代碼應該是同步的。另外使用其餘的臨時性分支來進行項目的開發維護。gitlab
咱們本身的流程與上圖提到的流程略有不一樣。如下是詳細的描述:post
trunk分支主要用於開發管理,做爲功能的集成分支。當有新的功能需求時,從trunk 分支檢出一個功能分支進行開發。測試
dev- release- hotfix- test-
在新建功能分支以前,須要先建立一個上游的test分支。基於trunk建立並檢出一個新的分支,做爲新功能開發的測試分支。同時再基於test分支建立一個功能開發分支。spa
test分支爲保護分支,從功能分支合併到test分支須要作code review。命令行
推薦命名規範:test-[功能模塊名稱]code
# 若是以這種方式檢出,須要提交到遠程倉庫,並在gitlab上設置爲保護分支, # 建議直接從gitlab上建立並檢出分支。 $git checkout -b test-tradeEntry trunk
在建立測試分支的時候,須要設置爲保護分支,建議從gitlab直接建立,並設置爲保護分支。而後再checkout
點擊跳轉分支管理頁面
點擊建立新分支
選擇新建的分支
打開新分支的設置頁面
設置分支爲保護分支
與此同時,從測試分支檢出功能開發分支(dev):
命名避免使用 master, trunk, release-, or hotfix- 。
推薦命名規範:dev-[功能模塊名稱]
# 也能夠像建立test分支同樣在gitlab上建立功能分支。若是使用命令行的方式則進行以下的操做 $ git checkout test-tradeEntry $ git checkout -b dev-tradeEntry test-tradeEntry # 同時把在本地建立的分支推送到遠程倉庫 $ git push --set-upstream origin dev-tradeEntry
此時開發的分支就創建好了。 咱們在本地開始開發,若是是多人協同進行一個功能的開發的話,建議再基於dev-tradeEntry在本地檢出本身開發的分支進行開發feature-tradeEntry-lsy,而後再合併到dev-tradeEntry分支上。
推薦命名規範: feature-[功能模塊名稱/與dev功能模塊名一致]-[開發者姓名]
$ git checkout -b feature-tradeEntry-lsy dev-tradeEntry
開發完成須要合併:
$git add . $git commit -m 'feat(模塊名): 提交信息' $git push $git checkout dev-tradeEntry $git pull $git merge --no-ff feature-tradeEntry-lsy (--no-ff no fast forward 會產生新的提交記錄。) $git push origin dev-tradeEntry
開發完成,須要提交測試 dev -> test:
因爲須要作code review 。 合併的操做並不禁開發者直接操做,而是發起一個Pull Request, 在gitlab 爲Merge Request。當經過code review 以後,便可進行合併。
進入gitlab dev分支頁面,建立一個合併請求:
建立合併請求
合併以後便可進行提測。測試期間產生的bug,在開發本地修改合併到dev以後,再同步dev代碼到test分支上進行下一輪測試,如此循環往復直到測試驗收經過。
測試完成,須要上線合併 test -> trunk:
$git checkout trunk $git pull $git merge --no-ff test-tradeEntry (--no-ff no fast forward 會產生新的提交記錄。) $git branch -d test-tradeEntry $git push origin trunk
預發佈分支用於進行發佈前的集成迴歸,能夠基於此進行bug的修改。修改完成後,合併回trunk以及master, 而且在master 上打一個tag,同時進行上線。能夠在push master的時候設置鉤子進行發佈的構建。
$ git checkout -b release-1.2 trunk
在確認沒有問題以後,能夠合併到master分支:
$ git checkout master $ git pull $ git merge --no-ff release-1.2 # 對合並生成的新節點,作一個標籤 $ git tag -a 1.2
再合併回trunk 分支:
$ git checkout trunk $ git pull $ git merge --no-ff release-1.2 $ git branch -d release-1.2
若是線上發佈的版本須要緊急修復,能夠直接從master上檢出一個hotfix的分支,用於bug 修改。
$ git checkout -b hotfix-1.2.1 master #修改完畢以後合併回master $ git checkout master $ git pull $ git merge --no-ff hotfix-1.2.1 $ git tag -a 1.2.1 #合併到trunk $ git checkout trunk $ git pull $ git merge --no-ff hotfix-1.2.1 $ git branch -d hotfix-1.2.1
注意:當在進行bug fix 的時候若是有一個release 正在發版,則應該把hotfix合併到release上,而不是trunk。
git tag -a 0.1 -m "Initial public release" master git push --tags