Git flow的分支模型與及常用命令簡介

2021-07-04 17:12:16 字數 3515 閱讀 9516

git flow是git的乙個擴充套件集,它基於vincent driessen 的分支模型,文章「a successful git branching model」對這一分支模型進行了描述,其示意圖如下:

上圖從左往右看,分別為

或者,直接輸入以下命令安裝git flow:

apt-get install git-flow

在windows平台下安裝git flow,可以參考《windows環境下msysgit安裝git flow》。

我們可以通過以下命令來初始化乙個現有的git本地倉庫。

git flow init

接著回答幾個關於分支的問題。不用擔心,使用預設值即可,直接按回車鍵。

no branches exist yet. base branches must be created now

branch name for production releases: [master]

branch name for 「next release」 development: [develop]

how to name your supporting branch prefixes?

feature branches? [feature/]

release branches? [release/]

hotfix branches? [hotfix/]

support branches? [support/]

version tag prefix?

這樣,便完成了git flow的初始化工作。

在git flow 的分支模型中,有兩個主分支masterdevelop,還有幾個額外的分支來支援**的版本管理。下面先簡要介紹一下這些分支的特點和git flow常用命令的使用。

master分支只有乙個。

master分支上的**總是穩定的,隨時可以發布出去。

平時一般不在master分支上操作,當release分支和hotfix分支合併**到master分支上時,master上**才更新。

當倉庫建立時,master分支會自己建立。

develop分支只有乙個。

新特性的開發是基於develop分支的,但不直接在develop分支上開發,特性的開發是在feature分支上進行。

當develop分支上的特性足夠多以至於可以進行新版本的發布時,可以建立release分支的。

可以同時存在多個feature分支,新特性的開發正是在此分支上面。

可以對每個新特性建立乙個新的feature分支,當該特性開發完畢,將此feature分支合併到develop分支。

建立乙個新的feature分支,可以使用以下命令:

git flow feature start test

執行以下命令後,feature/test分支會被建立。

當特性開發完畢,需要將此分支合併到develop分支,可以使用以下命令實現:

git flow feature finish test

上面的命令會將feature/test分支的內容merge到develop分支,並將feature/test分支刪除。

feature分支只是存在於本地倉庫,如果需要多個人共同開發此特性,也可以將feature分支推送到過程倉庫。

git flow feature publish test

feature 分支的生命週期持續到特性的開發完畢,當完成特性的開發,你可以使用git的分支管理命令將此feature分支刪除。

當完成了特性的開發,並且將feature分支上的內容merge到develop分支上,這時可以開始著手準備新版本的發布,release分支正是作為發布而開設的分支。

release分支基於develop分支,在同一時間只有乙個release分支,其生命週期較短,只是為了發布而使用。這意味著,在release分支上,只是進行較少**修改,比如bug的修復,原有功能的完善等。不允許在release分支增加大的功能,因為這樣會導致release分支的不穩定,不利於發布的進行。

當release分支(例如,v.1.0)被建立出來後,develop分支可能正準備另一版本(例如,v.2.0),因此,當release分支merge回develop分支時,可能會出現衝突,需要手工解決衝突才能繼續merge。

通過以下命令來建立release分支:

git flow release start v.1.0

執行過完上面的命令,release分支release/v.1.0會被建立出來 ,並且切換到該分支。

當完成release分支功能的完善或者bug的修復後,執行以下命令來完成release分支:

git flow release finish v.1.0

這個命令會執行以下的操作:

當發現master分支出現乙個需要緊急修復的bug,可以使用hotfix分支。hotfix分支基於master分支,用來修復bug,當完成bug的修復工作後,需要將其merge回master分支。

同一時間只有乙個hotfix分支,其生命週期較短。

可以使用以下命令來建立hotfix分支:

git flow hotfix start v.1.0

使用以下命令來結束hotfix分支的生命週期:

git flow hotfix finish v.1.0

這句命令會將hotfix分支merge到master分支和release分支,並刪除該hotfix分支。

值得注意的是,如果bug修復時,正存在著release分支,那麼hotfix分支會merge到release分支,而不是develop分支。

可以使用下圖來說明git flow這幾分支的常用命令:

在開發的整個階段,只有兩個主分支貫穿於整個開發階段:master分支和develop分支。功能特性的開發以及bug的修復都通過建立新的分支來實現,且這些分支的生命週期都比較短暫。開發成員之間的開發可以做到盡量不干擾對方,這保證了**的穩定性。

git flow的分支模型簡單清晰,易於使用。通過本文對git flow常用命令的介紹,你可以盡情享受它為我們管理**帶來的方便。

Git分支模型(GitFlow)

merge no ff 使用 no ff合併時,在刪除develop分支之後,該分支的合併資訊仍然被保留,在以後的 分析中可以便捷的檢視到歷史資訊,而fast forward方式則無法辨識 的合併資訊 master分支的head節點始終處於 準備好進行生產的狀態 即master分支的head節點所指...

Git Flow常用的分支

也就是我們經常使用的master分支,這個分支最近發布到生產環境的 最近發布的release,這個分支只能從其他分支合併,不能在這個分支直接修改 這個分支是我們是我們的主開發分支,包含所有要發布到下乙個release的 這個主要合併與其他分支,比如feature分支 這個分支主要是用來開發乙個新的功...

常物件與常成員函式的關係

1 常物件 用const修飾的物件叫物件常量,其格式如下 類名 const 物件名 或者 const 類名 物件名 宣告為常物件的同時必須被初始化,並從此不能改寫物件的資料成員。例 分析下列錯誤的地方,說明理由 include class point void movepoint int a,int...