Git Flow介紹

以下資料皆來自[Ref],此處僅作個人筆記整理

Git Flow 是什麼?為什麼需要這種東西?

當專案開發人數越來越多,如果沒有訂好規矩,每個人的 Commit 習慣可能都不同,放任大家隨便 Commit 的話遲早會造成災難。

根據 Git Flow 的建議,主要的分支有 masterdevelophotfixrelease 以及 feature 這五種分支

Master 分支:
放穩定、隨時可上線的版本。這個分支的來源只能從別的分支合併過來,開發者不會直接 Commit 到這個分支。因為是穩定版本,所以通常也會在這個分支上的 Commit 上打上版本號標籤。

Develop 分支:
所有開發的基礎分支,當要新增功能的時候,所有的 Feature 分支都是從這個分支切出去的。Feature 分支的功能完成後,也都會合併回來這個分支。

Feature 分支:
當要開始新增功能的時候,就是使用 Feature 分支的時候了。Feature 分支都是從 Develop 分支來的,完成之後會再併回 Develop 分支。

Release 分支:
當認為 Develop 分支夠成熟了,就可以把 Develop 分支合併到 Release 分支,在這邊進行算是上線前的最後測試。
測試完成後,Release 分支將會同時合併到 Master 以及 Develop 這兩個分支上。Master 分支是上線版本,而合併回 Develop 分支的目的,是因為可能在 Release 分支上還會測到並修正一些問題,所以需要跟 Develop 分支同步,免得之後的版本又再度出現同樣的問題。

Hotfix 分支:
當線上產品發生緊急問題的時候,會從 Master 分支開一個 Hotfix 分支出來進行修復,Hotfix 分支修復完成之後,會合併回 Master 分支,也同時會合併一份到 Develop 分支。
Note 1:
為什麼要合併回 Develop 分支?
Ans: 如果不這麼做,等到時候 Develop 分支完成並且合併回 Master 分支的時候,那個問題就又再次出現了。
Note 2:
那為什麼一開始不從 Develop 分支切出來修?
Ans: 因為 Develop 分支的功能可能尚在開發中,這時候硬是要從這裡切出去修再合併回 Master 分支,只會造成更大的災難。

自己畫的dependency示意圖

Ref: https://gitbook.tw/chapters/gitflow/why-need-git-flow