Git-Flow 帶你飛!

git glow

簡單介紹

git-flow,是一個工具,是一種規範

Git Flow是構建在Git之上的一個組織軟件開發活動的模型,是在Git之上構建的一項軟件開發最佳實踐。Git Flow是一套使用Git進行源代碼管理時的一套行爲規範和簡化部分Git操做的工具。git

http://www.ituring.com.cn/article/56870安全

因此說,git-flow 是一個規則,一種約定,一種規範,並非什麼洪水猛獸, 是提升你使用git技術的一個進階實踐。app

git-flow 基於git自己的分支管理機制

因此,你必須先了解什麼是git的分支(branch).請看圖工具

由於時間關係,咱們假設你已經知道什麼是branch, git-flow就是經過在一個項目裏劃分不一樣的分支,來實現功能開發、bug修復、版本發佈,以及開發過程當中的衝突處理等。測試

(若是以爲這個描述有點繞,那麼暫時不用理解它。)網站

git-flow把分支劃分了幾個類別

Master編碼

就是平時咱們看到的master,項目的主要分支,對外的第一門面。 全部外人瀏覽你的項目,使用你的項目,第一時間都是看到master 你能夠把它理解成 穩定無bug發佈版 。(任什麼時候候都ready to deploy 因此,git-flow 要求咱們不能在master下作開發。

Developspa

處於功能開發最前線的版本,查看develop分支就能知道下一個發佈版有哪些功能了。 develop一開始是從master裏分出來的,而且按期會合併到master裏, 每一次合併到master,表示咱們完成了一個階段的開發,產生一個穩定版。 一樣的,develop下也不建議直接開發代碼,develop表明的是已經開發好的功能 的迴歸版本(爲何說迴歸?)

Feature插件

帶着develop處的疑問,咱們在feature裏爲你解答。(有點長,別不看) feature的做用是爲每個新功能從develop裏建立出來的一個分支。 例如小明和小白分別作兩個不相干的功能,就應該分別建立兩個分支, 各自開發完之後,前後合併到develop裏,這就叫作迴歸。 在這個過程裏,小明小白不須要任何的溝通,分別並行地開發, git-flow能很好的處理好分支間並行開發的關係。 develop,則會在適當的時候,由合適的人,合併到master,做爲下一個穩定版本。

Hotfix命令行

以上3種之外,還有一個很重要的類型,hotfix 它是用來修復緊急bug的,而bug一般是來自線上的, 因此hotfix分支是從master裏建立出來的,而且,在bug修改好之後, 要同時合併到masterdevelop,這一點須要特別注意。

Release

release更多傾向與版本發佈,項目上線前的一些全面測試以及上線準備。 一樣也肩負着版本歸檔,回滾支持等。

開始使用

上面說到了,git-flow本質只是一個約定,因此你徹底能夠在現行的git命令行裏, 手動地完成所有git-flow操做,(手動建立、合併分支等), 重點是遵照git-flow規範,遵照命名約定和分支管理流程。

不過,git-flow早就有插件了。參看這個文章:

http://blog.163.com/tod_zhang/blog/static/1025522142012913113957679/

安裝了這個插件,你的git就多了一系列方便的命令,好比:

git flow init

git flow feature start

git flow feature finish

等等。

不過,我以爲這個插件仍是不夠方便,我牆裂推薦大家都用 SourceTree 。

若是我要推薦一個git-flow客戶端,我會推薦SourceTree。

若是我要推薦一個git客戶端,那我仍是推薦SourceTree。

沒錯,SourceTree是專門爲git-flow開發的git客戶端,它涵蓋了全部git自己的功能,

因此即便你不flow,你也可使用SourceTree來管理你的git項目。

官方網站:

https://www.sourcetreeapp.com/

至於如何下載、安裝、/* 破解 */ ,這些內容就交給各位自行baidu了。

詳細說明

那麼下面咱們來實際操做一次,看看SourceTree如何幫助咱們使用git-flow

1.小明建立了一個新項目,就作 Demo,而且用SourceTree來打開它。若是這一步都 不會,你仍是別作開發了。

(一個新的項目,就不發圖了)

2.小明爲了使用git-flow,須要爲git項目作一次初始化。

這些能夠改動的地方,爲了方便其餘協做人員,仍是用默認好了。

3.初始化後,會自動切換到develop分支,接下來,小明要發一個新功能

注意那個 Git Flow 按鈕,全部flow的功能都是從那裏開始操做的。 在彈出的窗口裏輸入功能的名字便可,小明決定開發一個 test1 功能。

這時,左側的菜單已經看到分支切換到test1了(有加粗效果)

4.而後小明開始了暗無天日的編碼過程,千辛萬苦後寫了一行readme

接下來咱們演示一下如何提交修改

這個界面十分清晰地告訴你本地沒有commit的代碼,

固然了,這僅僅是commit到本地,由於這始終是git,咱們還須要push到遠端。

能夠在左側看到,咱們暫存了多少個commit。 按照圖上流程,選擇你要push 的分支,你也能夠一次選擇多個, 在這裏咱們先push 功能分支test1 。

5.提交過幾回代碼以後,小明認爲功能已經開發完畢,能夠迴歸到develop了

注意,這個時候,只有test1的代碼是改變了的,develop仍是停留在小明建立feature時的狀態。

爲了安全起見,每次合併以前,最好pull一下develop,再次不表。(SourceTree拉取)

那麼咱們如今把開發好的test1合併到develop:

整個界面很簡單,就一個操做,實際上,它背後作了不少。 (@ -_-)

如無心外,test1裏的改動會合併到develop裏,而且會刪除本地的test1,

而後把分支切換到develop,這時候咱們應該能看到整個test1期間的變更數目:

接下來你應該當即把develop的改動push到遠端!

OK,這就是一個功能開發的完整流程,就算有多個功能在並行開發,

經過git-flow的協調,都能互不干擾地開發,最終所有做用到develop上。

相關文章
相關標籤/搜索