什麼是git flow commit model?

下圖是從A successful Git branch model抓過來的,
說明了一個正常的git開發流程應該是怎麼樣子的?
應該會有哪些branch、分別又是怎麼使用?下面就一個一個來說明~

git-model


Feature

  • 對於一些修改較大或較複雜的功能(不管是未來或是下一版要發布),
    會特別建立一個feature分支。
  • 分支會從develop某一點創建出來,開發後再合併回去develop。

Hotfix

  • 用於「修改master上的bug」或是
    需要「快速地在master版本上改小東西(但相關的release分支已關閉)的時候」。
  • 修改後會需要合併到目前最新的develop上。

Develop

  • 用來整合做好的功能(feature)和修好的bug(hotfix)的一個分支。
    個人認為任何commit都不應該commit到develop上,
    但有些認為小功能或小bug可以直接commit到develop上(共識?),
  • Daily Build和CI(Continuous Integration)都是在這個分支上進行。
    因為這個分支代表這在下次release的版本要發布的更新。

Release

  • 當開發好的feature到一個階段並且合併到develop上後,
    會從develop創建一個release分支出來,可能是準備進行產品發布或更新時使用。
  • 若不幸的在測試中又發現bug(沒有在develop中被發現的),
    可以直接在release上更新,注意需要同步到develop中。

Master

  • 當release測試到一定程度時會合併到master並打tag。
  • master上的專案版本都是「隨時可以發布並出貨」的版本,
    每一版都應該要有一個tag版號並說明更新項目。
  • 任何commit都不應該commit到master上,
    只能從release或hotfix合併進來。


Git Flow

git flow是一個git輔助小工具,幫助我們更容易做上述操作。

初始化

  • 進到專案資料夾
  • 初始化一個git flow model
    git flow init

開發功能

  • 創建feature分支
    git flow feature start “feature name"
  • 把feature合併到develop,並刪除feature分支
    git flow feature finish “feature name"

發布功能

  • 發布當前develop版本
    git flow release start “release number"
  • 測試完程式發佈到master並同步到develop
    git flow release finish “release number"

Hotfix修改

  • 開啟hotfix
    git flow hotfix start “hotfix number"
  • 結束hotfix發佈到master並同步到develop
    git flow hotfix finish “hotfix number"

參考資料

 

廣告