git flow
TL;DR
- git flow 主要有
master、develop、feature、release、hotfix五種分支。 - 長期分支:
master、develop。 - 短期分支:
feature、release、hotfix。 - 在
hotfix、release的任務完成後,要記得合併develop,以確保develop隨時為最新版本。
什麼是 git flow
git flow 主要有 master、develop、 feature 、release 、hotfix 五種分支,各分支負責不同的功能。
其中 master 以及 develop 這兩個分支又被稱做長期分支,因為它們會一直存活在整個 Git Flow 裡,而其它的分支大多會因任務結束而被刪除。
不同的團隊有可能會有不同的命名, master 有些團隊可能命名為 production,release 有些團隊可能取名為 staging,但是概念基本上是一樣的。

master
- 用來存放穩定、隨時可上線的分支。
- 分支的來源只能從別的分支合併過來,開發者不會直接 commit 在這個分支。
develop
- 所有開發的基礎分支。
- 當要開發新功能的時候,所有
feature都是從這個分支作為基底進行開發。
feature
- 開發新功能的分支。
feature都是從develop來的,功能完後會再併回develop, 並刪除feature。
release
- 上線前的測試分支。
- 當
develop已經完成的差不多了,就可以把develop合併到release。 - 測試完成後,
release將會同時合併到master以及develop,並刪除release。 - 需要合併回
develop是因為release可能還會測到並修正一些 bug,以確保develop版本最新。
hotfix
- 當
master上發現 bug 時,用來緊急修復的分支。 - 當線上產品發生緊急問題的時候,會從
master開一個hotfix出來進行修復,hotfix修復完成之後,會合併回master,也同時會合併到develop,並刪除hotfix。 - 由於 bug 是在
hotfix修復的,如果沒有再合併回develop,當develop重新合併master時, bug 會再次出現。
git flow 優缺點
優點
- 流程清晰。
- 適合版本發佈的專案。
缺點
- 需要同時維護兩條長期分支。
- 需要經常切換分支。
hotfix、release經常忘記合併回develop。
參考來源: