git-flow 工作流程

1.git-flow 說明

一旦安裝安裝 git-flow坟漱,你將會擁有一些擴(kuò)展命令渠抹。這些命令會在一個預(yù)定義的順序下自動執(zhí)行多個操作视哑。

git-flow 并不是要替代 Git阵面,它僅僅是非常聰明有效地把標(biāo)準(zhǔn)的 Git 命令用腳本組合了起來轻局。

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

Master

就是平時我們看到的master,項目的主要分支样刷,可以把它理解成 穩(wěn)定無bug發(fā)布版 仑扑。(任何時候都ready to deploy)
所以,git-flow 要求我們不能在master下做開發(fā)置鼻。

Develop

處于功能開發(fā)最前線的版本镇饮,查看develop分支就能知道下一個發(fā)布版有哪些功能了。
develop一開始是從master里分出來的沃疮,并且定期會合并到master里盒让,
每一次合并到master梅肤,表示我們完成了一個階段的開發(fā)司蔬,產(chǎn)生一個穩(wěn)定版。
同樣的姨蝴,develop下也不建議直接開發(fā)代碼俊啼,develop代表的是已經(jīng)開發(fā)好的功能

Feature

feature的作用是為每一個新功能從develop里創(chuàng)建出來的一個分支。
例如A和B分別做兩個功能左医,一個為人臉識別授帕,一個為綁卡界面同木。就可以創(chuàng)建兩個分支,各自開發(fā)完以后跛十,先后合并到develop里彤路,這就叫做回歸。
在這個過程里芥映,A 和 B不需要任何的溝通洲尊,分別并行地開發(fā),
git-flow能很好的處理好分支間并行開發(fā)的關(guān)系奈偏。
而develop坞嘀,則會在適當(dāng)?shù)臅r候,由合適的人惊来,合并到master丽涩,作為下一個穩(wěn)定版本。

Hotfix

以上3種以外裁蚁,還有一個很重要的類型矢渊,hotfix。
它是用來修復(fù)緊急bug的枉证,而bug通常是來自線上的昆淡,
所以hotfix分支是從master里創(chuàng)建出來的,并且刽严,在bug修改好以后昂灵,
要同時合并到master和develop,這一點(diǎn)需要特別注意舞萄。

Release

release更多傾向與版本發(fā)布眨补,項目上線前的一些全面測試以及上線準(zhǔn)備。
同樣也肩負(fù)著版本歸檔倒脓,回滾支持等

git-flow 流程圖

2.git-flow 安裝

1.Mac下安裝

通過 homebrew 安裝

在終端執(zhí)行``brew install git-flow-avh```
homebrew 安裝 gitflow

2.windows下安裝

wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
安裝 git-flow, 你需要 wget 和 util-linux撑螺。PS:我沒有 windows,也沒實(shí)踐過崎弃。

3.開始使用

初始化

使用 git-flow甘晤,從初始化一個現(xiàn)有的 git 庫內(nèi)開始:

git flow init

你必須回答幾個關(guān)于分支的命名約定的問題。

建議使用默認(rèn)值饲做。
終端使用 git-flow.png
增加新功能

新功能的開發(fā)是基于 'develop' 分支的线婚。

通過下面的命令開始開發(fā)新功能 比如人臉識別功能:

git flow feature start MYFEATURE

這個操作創(chuàng)建了一個基于'develop'的特性分支,并切換到這個分支之下盆均。

完成開發(fā)新功能龄坪。這個動作執(zhí)行下面的操作.

合并 MYFEATURE 分支到 'develop'
刪除這個新特性分支
切換回 'develop' 分支

git flow feature finish MYFEATURE
最重要的是陷揪,這個 “feature finish” 命令會把我們的工作整合到主 “develop” 分支中去释树。在這里它需要等待:

一個在更廣泛的 “開發(fā)” 背景下的全面測試。
稍后和所有積攢在 “develop” 分支中的其它功能一起進(jìn)行發(fā)布饰抒。
之后,git-flow 也會進(jìn)行清理操作诀黍。它會刪除這個當(dāng)下已經(jīng)完成的功能分支袋坑,并且換到 “develop” 分支。

完成提交之后.png

合作開發(fā)一項新功能
可以發(fā)布新功能分支到遠(yuǎn)程服務(wù)器眯勾,這樣咒彤,其它用戶也可以使用這分支
git flow feature publish MYFEATURE
取得其它用戶發(fā)布的新特性分支,并簽出遠(yuǎn)程的變更咒精。

git flow feature pull origin MYFEATURE

可以使用 git flow feature track MYFEATURE 跟蹤在origin上的特性分支镶柱。

發(fā)布 release 版本

當(dāng)你認(rèn)為現(xiàn)在在 “develop” 分支的代碼已經(jīng)是一個成熟的 release 版本時,這意味著:第一模叙,它包括所有新的功能和必要的修復(fù)歇拆;第二,它已經(jīng)被徹底的測試過了范咨。如果上述兩點(diǎn)都滿足故觅,那就是時候開始生成一個新的 release 了

開始準(zhǔn)備release版本,使用 git flow release命令.

它從 'develop' 分支開始創(chuàng)建一個 release 分支

請注意渠啊,release 分支是使用版本號命名的输吏。這是一個明智的選擇,這個命名方案還有一個很好的附帶功能替蛉,那就是當(dāng)我們完成了release 后贯溅,git-flow 會適當(dāng)?shù)?em>自動去標(biāo)記那些 release 提交。

有了一個 release 分支躲查,再完成針對 release 版本號的最后準(zhǔn)備工作(如果項目里的某些文件需要記錄版本號)它浅,并且進(jìn)行最后的編輯。![發(fā)布 release](/Users/Yan/Desktop/圖片/發(fā)布 release.png)
完成 release
現(xiàn)在是時候按下那個危險的紅色按鈕來完成我們的release了:

git flow release finish 3.6.0

finish.png

這個命令會完成如下一系列的操作:

首先镣煮,git-flow 會拉取遠(yuǎn)程倉庫姐霍,以確保目前是最新的版本。
然后典唇,release 的內(nèi)容會被合并到 “master” 和 “develop” 兩個分支中去镊折,這樣不僅產(chǎn)品代碼為最新的版本,而且新的功能分支也將基于最新代碼介衔。
為便于識別和做歷史參考恨胚,release 提交會被標(biāo)記上這個 release 的名字(在我們的例子里是 “3.6.0”)。
清理操作夜牡,版本分支會被刪除与纽,并且回到 “develop”。
從 Git 的角度來看塘装,release 版本現(xiàn)在已經(jīng)完成急迂。依據(jù)你的設(shè)置,對 “master” 的提交可能已經(jīng)觸發(fā)了你所定義的部署流程

hotfix

很多時候蹦肴,僅僅在幾個小時或幾天之后僚碎,當(dāng)對 release 版本作做全面測試時,可能就會發(fā)現(xiàn)一些小錯誤阴幌。
在這種情況下勺阐,git-flow 提供一個特定的 “hotfix” 工作流程(因?yàn)樵谶@里不管使用 “功能” 分支流程,還是 “release” 分支流程都是不恰當(dāng)?shù)模?/p>

創(chuàng)建 Hotfixes

$ git flow hotfix start missing-link
hotfix.png

這個命令會創(chuàng)建一個名為 “hotfix/missing-link” 的分支矛双。因?yàn)檫@是對產(chǎn)品代碼進(jìn)行修復(fù)渊抽,所以這個 hotfix 分支是基于 “master” 分支。
這也是和 release 分支最明顯的區(qū)別议忽,release 分支都是基于 “develop” 分支的懒闷。因?yàn)槟悴粦?yīng)該在一個還不完全穩(wěn)定的開發(fā)分支上對產(chǎn)品代碼進(jìn)行地修復(fù)。

就像 release 一樣栈幸,修復(fù)這個錯誤當(dāng)然也會直接影響到項目的版本號愤估!

完成 Hotfixes

在把我們的修復(fù)提交到 hotfix 分支之后,就該去完成它了:

$ git flow hotfix finish missing-link
hotfixfinish.png

這個過程非常類似于發(fā)布一個 release 版本:

  • 完成的改動會被合并到 “master” 中速址,同樣也會合并到 “develop” 分支中玩焰,這樣就可以確保這個錯誤不會再次出現(xiàn)在下一個 release 中。
  • 這個 hotfix 程序?qū)⒈粯?biāo)記起來以便于參考芍锚。
  • 這個 hotfix 分支將被刪除昔园,然后切換到 “develop” 分支上去。

還是和產(chǎn)生 release 的流程一樣并炮,現(xiàn)在需要編譯和部署你的產(chǎn)品(如果這些操作不是自動被觸發(fā)的話)蒿赢。

git-flow 并不會為 Git 擴(kuò)展任何新的功能,它僅僅使用了腳本來捆綁了一系列 Git 命令來完成一些特定的工作流程渣触。

PS:sourcetree 提供了 git-flow 功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末羡棵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗅钻,更是在濱河造成了極大的恐慌皂冰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件养篓,死亡現(xiàn)場離奇詭異秃流,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柳弄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門舶胀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來概说,“玉大人,你說我怎么就攤上這事嚣伐√桥猓” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵轩端,是天一觀的道長放典。 經(jīng)常有香客問我,道長基茵,這世上最難降的妖魔是什么奋构? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮拱层,結(jié)果婚禮上弥臼,老公的妹妹穿的比我還像新娘。我一直安慰自己根灯,他們只是感情好醋火,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箱吕,像睡著了一般芥驳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茬高,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天兆旬,我揣著相機(jī)與錄音,去河邊找鬼怎栽。 笑死丽猬,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的熏瞄。 我是一名探鬼主播脚祟,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼强饮!你這毒婦竟也來了由桌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邮丰,失蹤者是張志新(化名)和其女友劉穎行您,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剪廉,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娃循,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了斗蒋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捌斧。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笛质,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捞蚂,到底是詐尸還是另有隱情妇押,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布洞难,位于F島的核電站舆吮,受9級特大地震影響揭朝,放射性物質(zhì)發(fā)生泄漏队贱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一潭袱、第九天 我趴在偏房一處隱蔽的房頂上張望柱嫌。 院中可真熱鬧,春花似錦屯换、人聲如沸编丘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘉抓。三九已至,卻和暖如春晕窑,著一層夾襖步出監(jiān)牢的瞬間抑片,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工杨赤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敞斋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓疾牲,卻偏偏與公主長得像植捎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阳柔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自git-flow[https://www.git-tower.com/learn/git/ebook/cn/c...
    zfylin閱讀 309評論 0 1
  • Git Flow工作流程 1.使用背景 在多組員焰枢,多項目等環(huán)境進(jìn)行協(xié)同工作時,如果沒有統(tǒng)一規(guī)范舌剂、統(tǒng)一流程医咨,則會導(dǎo)致...
    AllenYZD閱讀 3,725評論 0 70
  • 本文參考a-successful-git-branching-model Git flow是基于git之上的一種軟...
    同桌的桌閱讀 7,367評論 0 3
  • Git Flow 是什么 Git Flow是構(gòu)建在Git之上的一個組織軟件開發(fā)活動的模型,是在Git之上構(gòu)建的一項...
    俠骨癡夢閱讀 525評論 0 2
  • Gitflow 規(guī)范我們工作時寫代碼的流程架诞,操作git的流程 幾個常用的分支-master 主分支拟淮,不允許改代碼...
    丿任曦閱讀 581評論 0 0