Gitflow工作流

前言

最近換了一個(gè)新公司之景,因?yàn)橹白鲞^幾年的開發(fā),也有過一定的管理經(jīng)驗(yàn)熊尉,所以公司很器重罐柳,也希望自己能改善公司iOS團(tuán)隊(duì)的現(xiàn)狀。
既然有這樣的機(jī)會(huì)狰住,自己當(dāng)然要好好把握了张吉。這也許是自己面向真正管理的第一步吧。
因?yàn)楣緢F(tuán)隊(duì)比較年輕催植,為了以后可以更好的管理團(tuán)隊(duì),首先制定了代碼規(guī)范创南。后來伦忠,發(fā)現(xiàn)公司代碼管理也不是很好稿辙,于是就參考市面代碼管理方案,寫了下面的總結(jié)邻储。

背景

目前市面管理代碼的工具主要有SVN和Git兩種赋咽,而Git以分布式管理最終受到廣大程序員的喜愛。
主流的Git工作流有3種:
1. 集中式工作流吨娜,類似傳統(tǒng)的SVN脓匿,沒有很好的發(fā)揮Git的功效;
2. 功能分支工作流宦赠,在master分支上創(chuàng)建功能分支陪毡,在功能分支上開發(fā)新需求,開發(fā)完畢后勾扭,合并到master分支缤骨;這種工作流方式適合小團(tuán)隊(duì)的開發(fā),如果是大的團(tuán)隊(duì)尺借,這種方式會(huì)有一些小麻煩绊起,于是有了下一個(gè)工作流;
3. Gitflow工作流燎斩,本文也主要介紹此工作流虱歪;

下面是一張Gitflow工作流的示意圖:

Gitflow工作流.png

工作方式

Gitflow工作流主要有兩個(gè)分支蜂绎,master和develop分支,所有的操作都圍繞著兩個(gè)分支來做的笋鄙,這兩個(gè)分支代表了研發(fā)過程中的兩個(gè)重要環(huán)節(jié):發(fā)版和開發(fā)师枣。master是一個(gè)隨時(shí)可以發(fā)版的分支,而develop是一個(gè)隨時(shí)可以開發(fā)新功能的分支萧落。接下來践美,配合SourceTree工具詳細(xì)說明一下Gitflow在不同的階段是如何工作的。

初始化

首先將遠(yuǎn)程代碼倉(cāng)庫(kù)clone到本地找岖,打開SourceTree陨倡,在右上角有一個(gè)Git Flow的按鈕,單擊后如圖:

初始化

建議不做任何修改许布,直接OK兴革。SourceTree會(huì)自動(dòng)化進(jìn)行一些操作,最明顯的變化是多了一個(gè)develop分支蜜唾。

Workspace

將新建的develop分支推送到遠(yuǎn)端倉(cāng)庫(kù)杂曲。從此,代碼庫(kù)里就存在了兩個(gè)永久性的分支:master和develop袁余,未來所有的開發(fā)工作都圍繞這兩個(gè)分支進(jìn)行派生跟合并擎勘。這兩個(gè)分支也被稱為“歷史性”分支。

流程圖

新功能開發(fā):創(chuàng)建feature分支颖榜,合并feature分支

當(dāng)進(jìn)入開發(fā)階段棚饵,需要開發(fā)新功能時(shí),需要先創(chuàng)建一個(gè)新的分支朱转,注意,這個(gè)分支使用develop分支作為父分支积暖,當(dāng)新功能完成后合并到develop分支藤为,新功能提交不應(yīng)該直接與master分支交互。

流程圖

使用SourceTree可以很方便完成這一過程夺刑,初始化結(jié)束后缅疟,再次單擊GitFlow按鈕,如圖遍愿,選擇New Feature存淫,然后輸入分支名稱。

創(chuàng)建feature分支1
創(chuàng)建feature分支2

當(dāng)新功能開發(fā)完成后沼填,需要合并分支到develop分支桅咆,這時(shí)單擊GitFlow按鈕,選擇Finish Current按鈕坞笙,使用默認(rèn)設(shè)置岩饼,單擊OK荚虚。

合并feature分支1
合并feature分支2

提測(cè)階段:創(chuàng)建release分支籍茧,合并release分支

當(dāng)開發(fā)進(jìn)入到測(cè)試階段時(shí),需要給測(cè)試人員提供測(cè)試包寞冯,此時(shí)需要在develop創(chuàng)建release分支,測(cè)試階段出現(xiàn)的bug俭茧,在release分支上進(jìn)行修改,測(cè)試通過后螟蝙,將release分支合并到develop和master分支。

示意圖

使用SourceTree實(shí)現(xiàn)這一過程场斑,繼續(xù)單擊GitFlow按鈕牵署,如圖,選擇New Release奴迅,然后輸入分支名,單擊OK取具。

創(chuàng)建release分支1
創(chuàng)建release分支2

測(cè)試結(jié)束后,合并release分支产阱,繼續(xù)單擊GitFlow按鈕块仆,選擇Finish Current按鈕,使用默認(rèn)設(shè)置悔据,然后輸入Tag名庄敛,單擊OK藻烤。

合并release分支1
合并release分支2

確認(rèn)沒有沖突后隐绵,將本地推送到遠(yuǎn)程倉(cāng)庫(kù)。

線上維護(hù):創(chuàng)建hotfix分支依许,合并hotfix分支

當(dāng)產(chǎn)品通過測(cè)試后,就會(huì)發(fā)版上線峭跳。可能會(huì)遇到一個(gè)緊急問題需要解決蛀醉。這時(shí)需要?jiǎng)?chuàng)建hotfix分支了,需要注意拯刁,hotfix分支是唯一從master分支fork出來的分支。修復(fù)完后割捅,需要立即合并到master分支和develop分支帚桩,master分支應(yīng)該用新的版本號(hào)打好tag亿驾。

示意圖

使用SourceTree完成這一過程步驟莫瞬,繼續(xù)單擊GitFlow按鈕郭蕉,如圖,選擇New Hotfix按鈕召锈,輸入分支名稱。

創(chuàng)建hotfix分支1
創(chuàng)建hotfix分支2

修改规求,測(cè)試筐付,都需要在這個(gè)分支上完成。當(dāng)測(cè)試通過后沮尿,合并分支,繼續(xù)單擊GitFlow按鈕畜疾,如圖,選擇Finish Current按鈕姥敛,輸入tag名稱,選擇OK瞎暑。

合并hotfix分支1
合并hotfix分支2

確定沒有沖突后了赌,將修改推送到遠(yuǎn)端倉(cāng)庫(kù)。

Git網(wǎng)絡(luò)圖如下:

Git網(wǎng)絡(luò)圖

至此一個(gè)完整的開發(fā)周期結(jié)束袄秩,當(dāng)然上面僅僅模擬了一個(gè)簡(jiǎn)單開發(fā)周期,真正的開發(fā)一定會(huì)比較復(fù)雜之剧,但只要按照這個(gè)流程管理代碼筒狠,再?gòu)?fù)雜的開發(fā)情況,也不會(huì)出現(xiàn)問題辩恼。

唯一需要注意的時(shí)候,在合并代碼時(shí)會(huì)出現(xiàn)沖突灶伊,一定要先解決沖突后再推送到遠(yuǎn)端倉(cāng)庫(kù)。

唯一需要注意的時(shí)候聘萨,在合并代碼時(shí)會(huì)出現(xiàn)沖突,一定要先解決沖突后再推送到遠(yuǎn)端倉(cāng)庫(kù)胸完。

唯一需要注意的時(shí)候,在合并代碼時(shí)會(huì)出現(xiàn)沖突翘贮,一定要先解決沖突后再推送到遠(yuǎn)端倉(cāng)庫(kù)。

重要的事情說三遍锨能。

如果你是喜歡終端開發(fā)的,Gitflow也提供了相應(yīng)的工具址遇。無論是GUI還是終端,Gitflow提供的是一套完善的代碼管理流程倔约,只要理解了這個(gè)流程,使用什么都可以飛浸剩。

參考:
Git版本控制與工作流
Git工作流指南:Gitflow工作流

end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乒省,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砸泛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唇礁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盏筐,警方通過查閱死者的電腦和手機(jī)砸讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漾抬,“玉大人,你說我怎么就攤上這事常遂。” “怎么了平绩?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵漠另,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我腹忽,道長(zhǎng),這世上最難降的妖魔是什么砚作? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮着裹,結(jié)果婚禮上米同,老公的妹妹穿的比我還像新娘。我一直安慰自己面粮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布稍走。 她就那樣靜靜地躺著,像睡著了一般婿脸。 火紅的嫁衣襯著肌膚如雪柄驻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天抑钟,我揣著相機(jī)與錄音野哭,去河邊找鬼。 笑死虐拓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓉驹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼狠持,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了瞻润?” 一聲冷哼從身側(cè)響起甜刻,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤得院,失蹤者是張志新(化名)和其女友劉穎章贞,沒想到半個(gè)月后祥绞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸭限,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年败京,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赡麦。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖隧甚,靈堂內(nèi)的尸體忽然破棺而出窜管,到底是詐尸還是另有隱情黄刚,我是刑警寧澤惨奕,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布杂拨,位于F島的核電站砍艾,受9級(jí)特大地震影響蒂教,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脆荷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一凝垛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜓谋,春花似錦梦皮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至观堂,卻和暖如春让网,著一層夾襖步出監(jiān)牢的瞬間呀忧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工溃睹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留而账,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓丸凭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親腕铸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惜犀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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