Git flow

Git flow

集中式工做流git

功能分支工做流github

Gitfow工做流ide


根據Vincent Driessen的文章描述,git flow 的工做流程圖以下:svg

Vincent Driessen git flow

git flow 的主要分支有兩個,master和trunk。這兩個分支是長期維護的,而且這兩個分支的代碼應該是同步的。另外使用其餘的臨時性分支來進行項目的開發維護。gitlab

咱們本身的流程與上圖提到的流程略有不一樣。如下是詳細的描述:post

Git flow inside

1. master 主分支

  • master分支具備全部的歷史版本。主要用於版本的管理。每一次發版以後,都會基於這次發版在master上創建一個tag,用於版本的跟蹤。
  • master 上的代碼永遠是穩定的。
  • 不直接向master push 代碼。

2. trunk 功能集成分支

trunk分支主要用於開發管理,做爲功能的集成分支。當有新的功能需求時,從trunk 分支檢出一個功能分支進行開發。測試

3. 臨時性分支

dev-

release-

hotfix-

test-

4. 測試(test)分支 & 功能開發(dev)分支

在新建功能分支以前,須要先建立一個上游的test分支。基於trunk建立並檢出一個新的分支,做爲新功能開發的測試分支。同時再基於test分支建立一個功能開發分支。spa

  • 測試分支從trunk分支檢出
  • 基於test分支建立功能開發分支。不直接在test分支上作提交。
  • test分支測試完畢以後上線,從test 合併回trunk分支。
  • test分支爲保護分支,從功能分支合併到test分支須要作code review。命令行

    推薦命名規範:test-[功能模塊名稱]code

    # 若是以這種方式檢出,須要提交到遠程倉庫,並在gitlab上設置爲保護分支,
    # 建議直接從gitlab上建立並檢出分支。
    $git checkout -b test-tradeEntry trunk

    在建立測試分支的時候,須要設置爲保護分支,建議從gitlab直接建立,並設置爲保護分支。而後再checkout

    點擊跳轉分支管理頁面

    點擊跳轉分支管理頁面

    點擊跳轉分支管理頁面

    點擊建立新分支

    點擊建立新分支

    選擇新建的分支

    選擇新建的分支

    打開新分支的設置頁面

    打開新分支的設置頁面

    設置分支爲保護分支

    設置分支爲保護分支

與此同時,從測試分支檢出功能開發分支(dev):

  • 功能分支從 test 分支檢出
  • 必須合併回test
  • 命名避免使用 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

5. 預發佈(release)分支

  • release 從 trunk 檢出
  • 必須合併回 trunk 以及合併到 master
  • 命名慣例: release-*

預發佈分支用於進行發佈前的集成迴歸,能夠基於此進行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

6. bug修改(fixbug)分支

若是線上發佈的版本須要緊急修復,能夠直接從master上檢出一個hotfix的分支,用於bug 修改。

  • 從master 檢出
  • 必須合併回master
  • 必須合併到trunk
  • 命名慣例: hotfix-*
$ 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。

7. 基於master 的 tag

git tag -a 0.1 -m "Initial public release" master

git push --tags
相關文章
相關標籤/搜索