git-flow

git-flow

git-flow 應該是目前流傳最廣的 Git 分支管理實踐。git-flow 圍繞的核心概念是版本發(fā)布(release)。因此 git-flow 適用于有較長版本發(fā)布周期的項目。雖然目前推崇的做法是持續(xù)集成和隨時發(fā)布。有的項目甚至可以一天發(fā)布很多次。隨時發(fā)布對于 SaaS 服務類的項目來說是很適合的。不過仍然有很大數(shù)量的項目的發(fā)布周期是幾個星期甚至幾個月。較長的發(fā)布周期可能是由于非技術(shù)相關(guān)的因素造成的,比如人員限制、管理層決策和市場營銷策略等。

git-flow 流程中包含 5 類分支,分別是 master、develop、新功能分支(feature)、發(fā)布分支(release)和 hotfix。這些分支的作用和生命周期各不相同。master 分支中包含的是可以部署到生產(chǎn)環(huán)境中的代碼,這一點和 GitHub flow 是相同的。develop 分支中包含的是下個版本需要發(fā)布的內(nèi)容。從某種意義上來說,develop 是一個進行代碼集成的分支。當 develop 分支集成了足夠的新功能和 bug 修復代碼之后,通過一個發(fā)布流程來完成新版本的發(fā)布。發(fā)布完成之后,develop 分支的代碼會被合并到 master 分支中。

其余三類分支的描述如表 1所示。這三類分支只在需要時從 develop 或 master 分支創(chuàng)建。在完成之后合并到 develop 或 master 分支。合并完成之后該分支被刪除。這幾類分支的名稱應該遵循一定的命名規(guī)范,以方便開發(fā)人員識別。

表 1. git-flow 分支類型
分支類型 命名規(guī)范 創(chuàng)建自 合并到 說明
feature feature/* develop develop 新功能
release release/* develop develop 和 master 一次新版本的發(fā)布
hotfix hotfix/* master develop 和 master 生產(chǎn)環(huán)境中發(fā)現(xiàn)的緊急 bug 的修復

對于開發(fā)過程中的不同任務,需要在對應的分支上進行工作并正確地進行合并。每個任務開始前需要按照指定的步驟完成分支的創(chuàng)建。例如當需要開發(fā)一個新的功能時,基本的流程如下:

  • 從 develop 分支創(chuàng)建一個新的 feature 分支,如 feature/my-awesome-feature。
  • 在該 feature 分支上進行開發(fā),提交代碼,push 到遠端倉庫。
  • 當代碼完成之后,合并到 develop 分支并刪除當前 feature 分支。

在進行版本發(fā)布和 hotfix 時也有類似的流程。當需要發(fā)布新版本時,采用的是如下的流程:

  • 從 develop 分支創(chuàng)建一個新的 release 分支,如 release/1.4。
  • 把 release 分支部署到持續(xù)集成服務器上進行測試。測試包括自動化集成測試和手動的用戶接受測試。
  • 對于測試中發(fā)現(xiàn)的問題,直接在 release 分支上提交修改。完成修改之后再次部署和測試。
  • 當 release 分支中的代碼通過測試之后,把 release 分支合并到 develop 和 master 分支,并在 master 分支上添加相應的 tag。

因為 git-flow 相關(guān)的流程比較繁瑣和難以記憶,在實踐中一般使用輔助腳本來完成相關(guān)的工作。比如同樣的開發(fā)新功能的任務,可以使用 git flow feature start my-awesome-feature 來完成新分支的創(chuàng)建,使用 git flow feature finish my-awesome-feature 來結(jié)束 feature 分支。輔助腳本會完成正確的分支創(chuàng)建、切換和合并等工作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 Git Flow介紹 我們都知道, 在 git 的分支功能相對 svn 確實方便許多,而且也非常推薦使用分支來...
    七寸知架構(gòu)閱讀 8,061評論 20 68
  • 一、簡介 Git Flow定義了一個項目發(fā)布的分支模型,為管理具有預定發(fā)布周期的大型項目提供了一個健壯的框架。 二...
    _Mitch閱讀 26,948評論 2 41
  • Git FLow是什么 Git Flow是構(gòu)建在Git之上的一個組織軟件開發(fā)活動的模型,也是軟件開發(fā)過程中一種成功...
    華枯榮閱讀 2,447評論 2 10
  • 我們已經(jīng)從SVN 切換到Git很多年了,現(xiàn)在幾乎所有的項目都在使用Github管理, 本篇文章講一下為什么使用Gi...
    java菜閱讀 1,527評論 0 2
  • 心中怒氣似火燒, 痛苦不堪空腹飽。 我憐處處意不順, 愿脫公袍穿布袍。
    小星耀閱讀 320評論 0 0

友情鏈接更多精彩內(nèi)容