實用的git分支模型

image

主分支

倉庫里有兩個永生的主分支:

  • origin/master
  • origin/develop
image
  1. origin/master分支的代碼都是穩(wěn)定的,可以用來發(fā)布到生產(chǎn)環(huán)境的狀態(tài)
  2. origin/develop分支是為了下一次發(fā)布而處于開發(fā)狀態(tài)的捞蚂,因此鞍盗,也稱這個分支為“集成分支”
  3. 當(dāng)develop分支的代碼可以發(fā)布需了,所有的變更都需要merge回master分支跳昼,并為其打發(fā)布標(biāo)簽
  4. 因為每次向mastermerge代碼,都意味著一次產(chǎn)品發(fā)布肋乍,因此可以用git hook腳本在每次向master的提交動作時鹅颊,自動編譯,觸發(fā)發(fā)布流程

支持分支

模型中定義了三種支持分支:

  • feature 分支 (新功能開發(fā))
  • release 分支(版本發(fā)布)
  • hotfix 分支(熱修復(fù)開發(fā))

feature 分支

feature分支描述

feature分支專門用來開發(fā)新功能墓造。但是在開始開發(fā)新功能的時候堪伍,并不知道這個新功能究竟會在哪個發(fā)布版本上被發(fā)布。因而觅闽,某些新功能分支可能會存在比較久并一直處于開發(fā)狀態(tài)帝雇,但是最終會被merge回develop分支上或被遺棄。
feature分支只應(yīng)該存在于develop倉庫中蛉拙,不應(yīng)該在origin倉庫中出現(xiàn)摊求。

feature分支的規(guī)則

image
  1. 在develop分支上創(chuàng)建 feature分支
  2. 必須且只能merge回 develop分支
  3. 命名規(guī)范: 可以使用除master, develop, release-*, hotfix-* 外的各種名稱

feature分支的基本使用命令

從develop分支上創(chuàng)建feature分支

git checkout -b myfeature develop

將feature分支merge回develop分支

#切換到develop分支
git checkout develop

#將myfeature merge到develop上。--no-ff 參數(shù)就讓merge命令創(chuàng)建一個commit節(jié)點刘离,以保證提交信息不會丟失
git merge --no-ff myfeafure

#從本地倉庫中刪除myfeature分支
git branch -d myfeature

#將本地變更推到遠(yuǎn)程的develop倉庫保存
git push origin develop

使用--no-ff與不適用--no-ff參數(shù)時室叉,merge的原理示意圖:

image

release 分支

release分支的描述
release用來做封版操作,為發(fā)版做準(zhǔn)備硫惕。在這個分支上茧痕,可以做功能測試,驗收測試恼除,測試過程中的bug修復(fù)踪旷,及發(fā)版所需的數(shù)據(jù)準(zhǔn)備(版本號,構(gòu)建日期豁辉,數(shù)據(jù)庫數(shù)據(jù)準(zhǔn)備令野,等等)
不允許在release分支上做大的新功能開發(fā),只能做bug fix徽级。新功能開發(fā)需使用feature分支气破。
在創(chuàng)建release分支的時候會為此分支賦予版本號,但是這個版本號與develop分支發(fā)版的版本號無關(guān)餐抢,只是對此release版本迭代管理時用來進(jìn)行版本區(qū)分现使。

release 分支的規(guī)則

  1. 從develop分支上創(chuàng)建release分支
  2. 必須merge回develop和master分支
  3. 命名規(guī)則: release-*

release分支基本使用命令

從develop分支上創(chuàng)建新的release分支

#創(chuàng)建release-1.2分支,并切換到此分支上
git checkout -b release-1.2 develop

#..... 開發(fā) .....

#提交
git commit -a -m "此版本發(fā)布信息描述"

完結(jié)release分支: 這包括下面幾個動作:

  • 將release分支merge回master分支
  • 提交到master后旷痕,必須創(chuàng)建標(biāo)記
  • 將release分支merge回develop分支

在master分支上的操作命令

#切換到master分支上
git checkout master

#merge release分支到master上
git merge --no-ff release-1.2

#在master上為本次提交創(chuàng)建標(biāo)記
git tag -a 1.2

在develop分支上的操作命令

#切換到develop分支
git checkout develop

#merge release分支到develop分支上
git merge --no-ff release-1.2

完成merge操作后碳锈,可以刪除release分支

#刪除release分支
git branch -d release-1.2

hotfix 分支

hotfix分支的描述

hotfix分支與release分支類似,都是為發(fā)版做準(zhǔn)備欺抗。hotfix分支必須是從master的已發(fā)版狀態(tài)的標(biāo)記上創(chuàng)建售碳。
當(dāng)發(fā)版程序遇到了嚴(yán)重的bug需要立刻修復(fù)時,就可以創(chuàng)建hotfix分支。代碼修復(fù)結(jié)束贸人,提交回master竿屹,進(jìn)入到可發(fā)布狀態(tài)。

image

hotfix分支的規(guī)則

  1. 必須從master分支創(chuàng)建hotfix分支
  2. 需要merge回develop和master分支
  3. 命名規(guī)則: hotfix-*

hotfix分支的基本命令

創(chuàng)建hotfix分支

#從master上創(chuàng)建hotfix分支灸姊, 并切換到hotfix分支上
git checkout -b hotfix-1.2.1 master

#.... 修復(fù)bug ....

#提交. 如果同時有多個問題需要修復(fù),在每個提交中修復(fù)一個問題
git commit -a -m "修復(fù)bug的描述"

完結(jié)本次修復(fù)工作
提交修復(fù)代碼到master

# 切換到master分支
git checkout master

#merge代碼到master
git merge --no-ff hotfix-1.2.1

#在master上為本次提交創(chuàng)建標(biāo)記
git tag -a 1.2.1

提交修復(fù)代碼到develop分支上

# 切換到develop分支上
git checkout develop

#merge代碼到develop上
git merge --no-ff hotfix-1.2.1

注意秉溉,如果在develop分支上此時存在一個release分支力惯,hotfix代碼需要merge到這個release分支而不是直接進(jìn)入到develop分支,在release分支merge到develop分支后召嘶,此次的hotfix代碼會被最終merge到develop上父晶。

hotfix的代碼已經(jīng)merge回master和develop后,可以刪除此分支

git branch -d hotfix-1.2.1
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弄跌,一起剝皮案震驚了整個濱河市甲喝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌铛只,老刑警劉巖埠胖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淳玩,居然都是意外死亡直撤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門蜕着,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谋竖,“玉大人,你說我怎么就攤上這事承匣”统耍” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵韧骗,是天一觀的道長嘉抒。 經(jīng)常有香客問我,道長袍暴,這世上最難降的妖魔是什么众眨? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮容诬,結(jié)果婚禮上娩梨,老公的妹妹穿的比我還像新娘。我一直安慰自己览徒,他們只是感情好狈定,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般纽什。 火紅的嫁衣襯著肌膚如雪措嵌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天芦缰,我揣著相機(jī)與錄音企巢,去河邊找鬼。 笑死让蕾,一個胖子當(dāng)著我的面吹牛浪规,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播探孝,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼笋婿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顿颅?” 一聲冷哼從身側(cè)響起缸濒,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粱腻,沒想到半個月后庇配,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡绍些,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年讨永,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遇革。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡卿闹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萝快,到底是詐尸還是另有隱情锻霎,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布揪漩,位于F島的核電站旋恼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奄容。R本人自食惡果不足惜冰更,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望昂勒。 院中可真熱鬧蜀细,春花似錦、人聲如沸戈盈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至归斤,卻和暖如春痊夭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脏里。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工她我, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迫横。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓番舆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親员淫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

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