Git Flow簡介

Git Flow是什麼?

Git Flow是一套基於git的工做流程,這個工做流程圍繞着project的發佈(release)定義了一個嚴格的如何創建分支的模型。git

Git建分支是很是cheap的,咱們能夠任意創建分支,對任意分支再分支,分支開發完後再合併。github

比較推薦、多見的作法是特性驅動(Feature Driven)的創建分支法(Feature Branch Workflow)。bash

簡而言之就是每個特性(feature)的開發並不直接在主幹上開發,而是在分支上開發,分支開發完畢後再合併到主幹上。服務器

這樣作的好處是工具

  1. 還處於半成品狀態的feature不會影響到主幹post

  2. 各個開發人員之間作本身的分支,互不干擾測試

  3. 主幹永遠處於可編譯、可運行的狀態spa

GitFlow則在這個基礎上更進一步,規定了如何創建、合併分支,如何發佈,如何維護歷史版本等工做流程。code

master和develop分支

圖片描述

master分支只存放歷史發佈(release)版本的源代碼。各個版本經過tag來標記。上圖裏的v0.1和v0.2就是tag。blog

develop分支則用來整合各個feature分支。開發中的版本的源代碼存放在這裏。

feature分支

圖片描述

每個特性(feature)都必須在本身的分支裏開發,feature分支派生自develop分支。

當feature開發完畢後,要合併回develop分支。feature分支永遠不會和master分支打交道。

release分支

圖片描述

release分支不是一個放正式發佈產品的分支,你能夠將它理解爲「待發布」分支。

咱們用這個分支幹全部和發佈有關的事情,好比:

  1. 把這個分支打包給測試人員測試

  2. 在這個分支裏修復bug

  3. 編寫發佈文檔

因此在這個分支裏面絕對不會添加新的特性

當和發佈相關的工做都完成後,release分支合併回develop和master分支。

單獨搞一個release分支的好處是,當一個團隊在作發佈相關的工做時,另外一個團隊則能夠接着開發下一版本的東西。

hotfix分支

圖片描述

一個項目發佈後或多或少確定會有一些bug存在,而bug的修復工做並不適合在develop上作,這是由於

  1. develop分支上包含還未驗證過的feature

  2. 用戶未必須要develop上的feature

  3. develop還不能立刻發佈,而客戶急需這個bug的修復。

這時就須要新建hotfix分支,hotfix分支派生自master分支,僅僅用於修復bug,當bug修復完畢後,立刻迴歸到master分支,而後發佈一個新版本,好比v0.1.1。

同時hotfix也要合併回develop分支,這樣develop分支就能享受到bug修復的好處了。

配套工具

Git Flow不單單是一種規範,還提供了一套方便的工具。大大簡化了執行Git Flow的過程。

安裝

OSX
$ brew install git-flow
Debian/Ubuntu Linux
$ apt-get install git-flow
Windows(cygwin)
$ wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

Initialize

對一個git倉庫配置一下git flow。主要是一些命名規範,好比feature分支的前綴,hotfix分支的前綴等。通常用默認值就行。

git flow init

Feature

Start a new feature

從develop開啓一個新的分支

git flow feature start MYFEATURE

這個命令會從develop分出一個分支,而後切換到這個分支上面。

Finish up a feature

一個feature分支開發完畢後,要作如下事情:

  • 把 MYFEATURE 合併到 develop

  • 把這個分支幹掉

  • 切換回develop分支

git flow feature finish FEATURE_NAME

Publish a feature

若是你想讓別人和你一塊兒開發MYFEATURE分支,那就把這個分支push到服務器上

git flow feature publish MYFEATURE

Getting a published feature

得到一個別人publish到服務器上的feature分支

git flow feature pull origin MYFEATURE

Release

Start a release

建立一個release分支,派生自develop分支。

git flow release start RELEASE

Publish a release

git flow release publish RELEASE

Finish up a release

一個release分支結束後,須要作如下工做:

  • 把release分支合併回master

  • 給本次發佈打tag

  • 同時把release分支合併回develop

  • 幹掉release分支

git flow release finish RELEASE

最後不要忘記把tag push到服務器git push --tags

Hotfix

git flow hotfix start

開啓一個hotfix分支

git flow hotfix start VERSION

Finish a hotfix

結束一個hotfix分支,和release同樣,同時合併回develop和master

git flow hotfix finish VERSION

參考資料

相關文章
相關標籤/搜索