Git Flow 是構(gòu)建在Git之上的一個(gè)軟件開發(fā)活動(dòng)源碼管理的模型,是在Git之上構(gòu)建的一項(xiàng)源碼管理最佳實(shí)踐。
此篇只介紹Git Flow的邏輯結(jié)構(gòu)以及各分支作用, 不涉及Git Flow的具體用法, 具體用法請(qǐng)參考Git Flow 發(fā)祥地 和 Git Flow 文檔
Git Flow 邏輯圖:

下面是Git Flow官網(wǎng)的邏輯結(jié)構(gòu)圖:

各分支介紹:
- 主分支 (長(zhǎng)期存在)
- master分支
- 存放可隨時(shí)部署的代碼. 當(dāng)開發(fā)告一段落, 產(chǎn)生了一份穩(wěn)定可以部署的代碼時(shí), 就可以更新到master分支上. 同時(shí)每次更新, 最要打好相應(yīng)版本號(hào)的tag. 項(xiàng)目成功主要表現(xiàn)為源碼, master便是存儲(chǔ)穩(wěn)定代碼之處, 因此此分支長(zhǎng)期存在.
- master分支一把創(chuàng)建倉(cāng)庫(kù)是默認(rèn)就創(chuàng)建好了, 命名一般就叫master
- develop分支
- develop分支是保持當(dāng)前開發(fā)最新成果的分支, 一般會(huì)在此分支上進(jìn)行晚間構(gòu)建(Nightly Build)并執(zhí)行自動(dòng)化測(cè)試.
- develop分支產(chǎn)生于master分支, 并長(zhǎng)期存在.
- 當(dāng)一個(gè)版本功能開發(fā)完畢且通過測(cè)試功能穩(wěn)定時(shí), 就會(huì)合并到master分支上, 并打好帶有相應(yīng)版本號(hào)的tag
- develop分支一般命名就叫develop
- 輔助分支 (在一段時(shí)間內(nèi)存在)
- feature分支
- feature分支從develop分支創(chuàng)建
- 主要是為了開發(fā)某個(gè)功能, 或試驗(yàn)?zāi)稠?xiàng)功能而創(chuàng)建, 開發(fā)完成之后需要合并到develop分支上
- 如果試驗(yàn)失敗, 此分支也可丟棄, 不用合并到develop分支之上.
- 此分支可以不推送到遠(yuǎn)程倉(cāng)庫(kù)而只存在與開發(fā)者本地.
- feature分支除
master,develop,release-*,hotfix-*之外隨意命名, 個(gè)人以為命名為feature-編號(hào)或者feature-功能名稱為好.
- release分支
release分支是為發(fā)布新的產(chǎn)品版本而設(shè)計(jì)的。在這個(gè)分支上的代碼允許做小的缺陷修正、準(zhǔn)備發(fā)布版本所需的各項(xiàng)說明信息(版本號(hào)、發(fā)布時(shí)間、編譯時(shí)間等等)。通過在release分支上進(jìn)行這些工作可以讓develop分支空閑出來以接受新的feature分支上的代碼提交,進(jìn)入新的軟件開發(fā)迭代周期。
release分支從develop分支創(chuàng)建而來
release分支結(jié)束后需要合并到develop分支和master分支上.
一般命名為
release-version-code, 如release-6.0
- hotfix分支
當(dāng)生產(chǎn)環(huán)境中的軟件遇到了異常情況或者發(fā)現(xiàn)了嚴(yán)重到必須立即修復(fù)的軟件缺陷的時(shí)候,就需要從master分支上指定的TAG版本派生hotfix分支來組織代碼的緊急修復(fù)工作。
hotfix分支從master分支創(chuàng)建而來
hotfix分支完成后需要合并到master和develop分支
一般命名為
hotfix-version-code, 如hotfix-6.0
更多閱讀:
Git Flow 項(xiàng)目地址
Git Flow 文檔
Git Community Book 中文版
Git Pro 英文版 v2
Git Pro 中文版 v2