Git flow 筆記
2017-09-26
前言
在公司開發專案的時候,同事剛好需要開發一個新的feature,而這個feature需要必較久的時間才能回到master,此時我們重新檢視了原來使用的開發流Github Flow 是不是有什麼缺點,並且也討論到如果轉到Git flow是否能解決現況下遇到的問題。
簡介
Flow 翻成中文是 『水流』的意思,這裡我們可以理解成工作流程,就像水流似的順暢流動。
廣泛被使用的工作流有三種:
- Git flow
- Github flow
- Gitlab flow
而本文主要把重點放在Git flow。
Git 雖然方便好用,但並沒有提出一套管理分支的方法,而國外有大大整理出一套方法: A successful Git branching model,而這套方法就是大家熟知的Git flow。
Git flow 的主要概念就是他有兩個主要的branch

分別為master 和 develop
develop是負責開發的分支,而master是給production用的
而次要分支有feature, release 跟hotfix
第一次看到這張圖可能會被嚇到吧www ,但這張圖其實沒有想像中的複雜,只比前一張圖多了三個次要分支。
接下來就一一來介紹他們~
首先是feature 分支,使用時機是只要是開發新功能的時候, 就開新的feature 分支,而當此feature 分支開發完後, 就將它 merge 回 develop 分支。
再來是release 分支,使用時機是在送出下一版前要修正bug的時候, 此時就開新的release 分支,而當此release 分支開發完後,讓他同時回到develop 還有 master 分支。
而至於hotfix 分支使用的時機則是在修已上production 後臨時要修bug時,當hotfix 分支開發完後,讓他同時回到develop 還有 master 分支。
教學
由於Git flow 不是Git 裡原有的功能,所以我們需要另外安裝作者所提供的gitflow 工具。
而這裡就以Mac OS X來做教學,並假設你有裝homebrew。
安裝
$ brew install git-flow
為專案加入Git flow
$ git flow init
建立分支
feature
列出所有的feature branch
$ git flow feature
開啟新的 feature branch
$ git flow feature start <name>
- name 為你想要的feature 分支名稱
結束feature branch
$ git flow feature finish <name>
- name 為你想要結束的分支名稱
- feature 分支完成後會被 merge進 develop 分支
把feature 分支 推到 remote
$ git flow feature publish <name>
- name 為你想要推的分支名稱
把remote的 feature 分支拉下來
$ git flow feature pull <remote> <name>
- remote 通常是 origin 的樣子? <- 這裡可能還要請大大糾正
- name 為你要拉的分支名稱
release
列出所有的 release branch
$ git flow release
開啟新的 release branch
$ git flow release start <release>
- release 為你想要的 release 分支名稱
結束 release branch
$ git flow release finish <release>
- release 為你想要結束的分支名稱
- release 分支完成後會被 merge進 develop 分支 和 master 分支
hotfix
列出所有的 hotfix branch
$ git flow hotfix
開啟新的 hotfix branch
$ git flow hotfix start <release>
- release 為你想要的 hotfix 分支名稱
結束 hotfix branch
$ git flow hotfix finish <release>
- hotfix 為你想要結束的分支名稱
- release 分支完成後會被 merge進 develop 分支 和 master 分支
結論
介紹了那麼多,最後的結論是我們沒有使用Git flow 😂 😂 😂,由於公司專案deploy的很頻繁,基本上master 和 develop 分支是沒有差別的,再者就算使用Git flow 也無法解決 feature 分支很久才回production 的問題,因此還是繼續使用原本的Github flow來當作我們的 workflow,不過剛好趁這個機會我也對Git flow 有進一步的認識。
About the author
Building Great Apps with React Native
Comments
Join the discussionNo comments yet. Be the first to comment.




