Git Branch說明及Git Flow規(guī)范

Git Branch 分支綜述

> 基于“開發(fā)/發(fā)布/缺陷分離”模型划址,結(jié)合開發(fā)階段分配分支。主要包含master/develop/release/hotfix分支痢缎。

分支特性

Master Branch

1. 生產(chǎn)分支独旷,又稱Production Branch。

2. 該分支只接收最近發(fā)布到生產(chǎn)環(huán)境的分支蛇捌。

3. 本分支**只能**從其他分支**合并**咱台,**不能**直接**修改**提交代碼。

4. 默認(rèn)為保護(hù)分支春贸,不可被刪除遗遵。

5. 在該分支上打tag,一般Commit Message應(yīng)為"merage From Release xxx"或"merage From Hotfix yyyy"這種自動(dòng)生成的日志信息允粤。

Develop Branch

1. 公共開發(fā)分支类垫,又稱主開發(fā)分支琅坡。

2. 該分支內(nèi)包含即將發(fā)布的版本代碼。

3. 代碼來源主要為合并自master/feature分支的代碼售躁。

4. 該分支可以修改代碼茴晋,作用是提供給所有feature分支合并使用,如Podfile市袖。

5. 該分支跟蹤于master分支掀虎,即主分支有代碼變更(如hotfix代碼)烹玉,即主動(dòng)合并至最新dev分支。

?Feature Branch

1. 功能分支二打,又稱任務(wù)分支继效。

2. 該分支主要用來開發(fā)獨(dú)立的一個(gè)功能,比如禪道上某個(gè)需求厉颤,或者某個(gè)模塊的調(diào)整凡简。

3. 該分支的作用是撇清各個(gè)開發(fā)任務(wù)并行不交叉,不用反復(fù)合并代碼解決沖突帜乞。

4. 本分支來源于develop分支筐眷,完成開發(fā)后合并于develop分支匀谣。

5. 此分支上的pod可指定本地目錄;但合并至develop時(shí)應(yīng)指定Branch或commit Id必怜。

Release Branch

1. 版本分支梳庆,又稱提測分支卑惜。

2. 本分支的作用為合并當(dāng)期需要發(fā)布的代碼,并提交測試更米。

3. 本分支來源于develo分支毫痕,即在開發(fā)完成后提測時(shí)各個(gè)feature合并至develop之后最新merge的代碼。

4. 本分支終結(jié)于通過測試即發(fā)布時(shí)栏笆,自動(dòng)合并至master分支蛉加,并刪除。

5. 此分支上的pod不能依賴本地目錄厂抽,通過版本Tag指定或遠(yuǎn)端分支代碼commit指定丁眼。

Hotfix Branch

1. 緊急修復(fù)分支

2. 該分支的作用為修復(fù)線上bug嵌施,即在正常的release迭代版本前插隊(duì)發(fā)布的分支莽鸭。

3. 該分支的來源為master分支硫眨,即線上最新代碼。

4. 該版本的終點(diǎn)為master分支巧号,在修復(fù)代碼上線后合并主分支并刪除此分支姥闭。

5. 如需要后續(xù)版本中保留此代碼,則需要手動(dòng)同步master代碼到develop棚品。

Git Flow 工作流

> 結(jié)合預(yù)設(shè)模版铜跑,組合指令,在不同開發(fā)階段自動(dòng)創(chuàng)建&合并分支掷空。

正常軟件開發(fā)周期為需求評(píng)審階段/開發(fā)階段/測試階段/發(fā)布階段。

對(duì)應(yīng)的代碼管理順序?yàn)樾陆ǜ北?開發(fā)代碼/合并代碼/修改代碼/發(fā)布代碼护锤。

工作流

配置模版

初始化一組新的gitflow命令酿傍,主要是指派各個(gè)分支組名拧粪。

```

git flow init

```

```

同理sourceTree:

"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"初始化倉庫"

```

開發(fā)新功能

需求評(píng)審階段沧侥,當(dāng)我們接到本階段開發(fā)計(jì)劃后會(huì)根據(jù)模塊及需求拆分成任務(wù)。

```

git flow feature start [featureName]

```

```

同理SourceTree:

"選中當(dāng)前feature分支"->"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"建立新的功能"

```

1. 首先我們會(huì)從先Checkout develop分支(實(shí)際只會(huì)操作一次)獲取最新的團(tuán)隊(duì)代碼癣朗。

2. 然后基于develop分支建立多個(gè)feature分支旷余。

3. 分支命名為"需求編號(hào)_功能描述_作者"或"功能模塊_描述_作者",如"**4396_blackFriday_wsc**"或"**feature/webview_deprecated_jgeng**" 扁达。

4. 原則上只需要及時(shí)合并最新develop代碼跪解;如果需要依賴其他開發(fā)分支代碼,手動(dòng)操作即可窘行。

完成新功能

需求開發(fā)階段图仓,當(dāng)我們拿到項(xiàng)目排期后根據(jù)所屬模塊在各自feature分支開發(fā)即可;當(dāng)功能開發(fā)完成后將合并至公共開發(fā)分支develop惶看。

```

git flow feature finish [featureName]

```

```

同理SourceTree:

"選中當(dāng)前feature分支"->"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"完成功能"

```

1. 首先在各自的任務(wù)分支上編寫代碼碳竟。

2. 然后拉取最新的develop分支代碼并合并至自己的分支狸臣。

3. 解決沖突,保證++可以正常運(yùn)行++诈泼,保證++podfile沒有依賴本地代碼++铐达。

4. 點(diǎn)擊完成功能,將自動(dòng)合并當(dāng)前feature代碼至develop分支并刪除此feature分支唐断。

提交測試

> 到提測日的時(shí)候杭抠,各自任務(wù)分支代碼應(yīng)該已經(jīng)開發(fā)完畢并完成自測偏灿。

此時(shí)代碼倉庫狀態(tài)應(yīng)該自動(dòng)清理完所有當(dāng)期提測的feature分支并自動(dòng)合并至develop分支,負(fù)責(zé)本次版本發(fā)布的同學(xué)創(chuàng)建提測分支铆遭。

```

git flow release start [versionName]

```

```

同理SourceTree:

"選中當(dāng)前feature分支"->"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"建立新的發(fā)布版本"

```

1. 首先我們要保證所有的提測分支應(yīng)該已經(jīng)合并至develop分支沿猜,ddl之后合并的即算延期啼肩。

2. 然后基于已經(jīng)合并本期所有內(nèi)容的develop新建release分支,此后develop分支得到解放呼畸,可以繼續(xù)合并下個(gè)版本的feature分支颁虐。

3. 測試期間遇到bug將統(tǒng)一在release分支上修復(fù)另绩;如擔(dān)心存在經(jīng)常性的合并沖突可自行新建bugfix分支并手動(dòng)合并到此release分支。

4. 當(dāng)開始測試后該release分支將與develop分支剝離主從關(guān)系蹦漠,避免dev上有下期的代碼也合并到本期release上车海。

5. 當(dāng)本次版本通過測試后,即在最后一次commit上修改版本號(hào)并Archive&upload埋同。

完成發(fā)布

需求評(píng)審階段棵红,當(dāng)我們接到本階段開發(fā)計(jì)劃后會(huì)根據(jù)模塊及需求拆分成任務(wù)逆甜。

```

git flow feature finish [versionName]

```

```

同理SourceTree:

"選中當(dāng)前feature分支"->"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"完成版本發(fā)布"

```

1. 當(dāng)本次版本通過審核后,點(diǎn)擊完成咏窿。

2. gitflow會(huì)先將本次發(fā)布分支的代碼合并到master分支错敢,并標(biāo)記tag稚茅。

3. gitflow將在合并完成后平斩,自動(dòng)同步最新的master代碼到develop供下期開發(fā)的feature分支合并使用绘面。

#### 緊急修復(fù)

需求評(píng)審階段,當(dāng)我們接到本階段開發(fā)計(jì)劃后會(huì)根據(jù)模塊及需求拆分成任務(wù)晚凿。

```

git flow hotfix start [bugName]

git flow hotfix finish [bugName]

```

```

同理SourceTree:

"選中當(dāng)前feature分支"->"頂部菜單"->"倉庫/repository"->"gitflow或hg flow"->"建立新的修復(fù)補(bǔ)丁/完成修復(fù)補(bǔ)丁"

```

1. 當(dāng)線上版本出現(xiàn)問題時(shí)歼秽,需要基于master分支新建hotfix分支情组。

2. 當(dāng)完成修復(fù)后,gotflow將自動(dòng)合并hotfix分支至master分支并標(biāo)記tag肆氓。

3. 在合并完成后谢揪,gitflow將自動(dòng)同步最新的master至develop分支。

Git flow 關(guān)于branch的管理



Git Rule Remarks

目的

git branch

1. 方便代碼管理寺滚,在合適的時(shí)機(jī)合并分支

2. 及時(shí)清理不必要的分支

git commit log提交信息應(yīng)當(dāng)簡明扼要村视,主要用途在于

1. git repo中查看回顧此文件經(jīng)歷的需求

2. Jenkins中對(duì)比兩次構(gòu)建之間的提交

3. 關(guān)心其他成員修改模塊是否對(duì)自己代碼產(chǎn)生影響

實(shí)踐要求

分支命名采取責(zé)任制的形式 "描述 - 所屬人"蚁孔。具體有兩種命名規(guī)則:

- 根據(jù)需求來惋嚎,采取"需求編號(hào)_需求描述_責(zé)任人","4396_blackFriday_wsc"

- 根據(jù)功能來, 采取"功能模塊_操作描述_責(zé)任人","webview_deprecated_lbw"

提交信息命名采取關(guān)鍵詞的形式 "xx - details"另伍。具體有兩種命名規(guī)則:

- 根據(jù)增刪改查件來,采取操作+文件的方式摆尝,"Add/Del/Fix - xx類/yy文件堕汞;

- 根據(jù)所設(shè)計(jì)的模塊,采取功能+描述的方式琐鲁,"Detail - 新增折扣標(biāo)簽"


## 補(bǔ)充內(nèi)容

//清理本地repo占用磁盤過大

```

git gc --prune=now?

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末围段,一起剝皮案震驚了整個(gè)濱河市奈泪,隨后出現(xiàn)的幾起案子跪呈,更是在濱河造成了極大的恐慌耗绿,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件债蜜,死亡現(xiàn)場離奇詭異晴埂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)寻定,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門儒洛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狼速,你說我怎么就攤上這事琅锻。” “怎么了向胡?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵恼蓬,是天一觀的道長。 經(jīng)常有香客問我僵芹,道長,這世上最難降的妖魔是什么拇派? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任荷辕,我火速辦了婚禮,結(jié)果婚禮上件豌,老公的妹妹穿的比我還像新娘疮方。我一直安慰自己,他們只是感情好苟径,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布案站。 她就那樣靜靜地躺著躬审,像睡著了一般棘街。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上承边,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天遭殉,我揣著相機(jī)與錄音,去河邊找鬼博助。 笑死险污,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的富岳。 我是一名探鬼主播蛔糯,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窖式!你這毒婦竟也來了蚁飒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤萝喘,失蹤者是張志新(化名)和其女友劉穎淮逻,沒想到半個(gè)月后琼懊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爬早,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年哼丈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筛严。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡醉旦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桨啃,到底是詐尸還是另有隱情髓抑,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布优幸,位于F島的核電站吨拍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏网杆。R本人自食惡果不足惜羹饰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碳却。 院中可真熱鬧队秩,春花似錦、人聲如沸昼浦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽关噪。三九已至鸟蟹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間使兔,已是汗流浹背建钥。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虐沥,地道東北人熊经。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像欲险,于是被迫代替她去往敵國和親镐依。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git天试,從https:/...
    落魂灬閱讀 12,665評(píng)論 4 54
  • 參考資料 介紹一個(gè)成功的 Git 分支模型 Git分支管理策略 簡介 規(guī)范的分支管理策略可以使得版本庫的演進(jìn)保持...
    水止云起閱讀 939評(píng)論 0 0
  • 原文出處:涂根華的博客 一:Git是什么槐壳? Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。 二:SVN與Git的最...
    挑戰(zhàn)者666888閱讀 4,491評(píng)論 6 27
  • 書名:《書都不會(huì)讀你還想成功》 作者:二志成秋秤、鄭會(huì)一(韓國) 時(shí)間:2017年1月7日 3小時(shí) 作圖時(shí)間:0.5小時(shí)
    紫洋閱讀 117評(píng)論 1 0
  • 有時(shí)總是心慌宏粤,總感覺自己在浪費(fèi)生命脚翘。可是绍哎,每天毫無意義的忙碌来农,讓我忘卻了思考。只是崇堰,不停的苦干沃于。做著每天重復(fù)的工作...
    f9f1de48dc41閱讀 79評(píng)論 0 0