簡述git flow分支管理

git flowVincent Driessen提出了一個分支管理的策略悼潭,非常值得借鑒坟冲。它可以使得版本庫的演進(jìn)保持簡潔,主干清晰邪蛔,各個分支各司其職急黎、井井有條。
先看下Vincent Driessen提出的分支管理模型圖侧到,以便對git flow有個大概的了解勃教。

兩種核心分支:

主分支(Master):代碼庫應(yīng)該有一個、且僅有一個主分支匠抗。所有提供給用戶使用的正式版本故源,都在這個主分支上發(fā)布。這個分支只能從其它分支合并,不能在這個分支上直接修改汞贸。需要注意的是绳军,所有在master上的提交應(yīng)該標(biāo)記tag

開發(fā)主分支(Develop):這個分支是我們是我們的主開發(fā)分支矢腻,包含所有要發(fā)布到下一個Release的代碼门驾,這個主要合并與其他分支,比如Feature分支多柑。該分支應(yīng)該只是進(jìn)行一些優(yōu)化和升級開發(fā)奶是,如果有新的需求應(yīng)該拉出一個feature分支。

三種臨時分支 :

功能(feature)分支:這個分支主要是用來開發(fā)一個新的功能竣灌,一旦開發(fā)完成聂沙,我們合并回Develop分支進(jìn)入下一個Release

預(yù)發(fā)布(release)分支:當(dāng)你需要一個發(fā)布一個新Release的時候初嘹,我們基于Develop分支創(chuàng)建一個Release分支及汉,完成Release后,我們合并到MasterDevelop分支削樊。

修補bug(hotfix)分支:當(dāng)我們在Production發(fā)現(xiàn)新的Bug時候豁生,我們需要創(chuàng)建一個Hotfix, 完成Hotfix后兔毒,我們合并回MasterDevelop分支漫贞,所以Hotfix的改動會進(jìn)入下一個Release甸箱。

image

這三種分支都屬于臨時性需要,使用完以后迅脐,應(yīng)該刪除芍殖,使得代碼庫的常設(shè)分支始終只有masterdevelop

Git Flow流程示例代碼 :

1. 創(chuàng)建develop分支
從master拉出develop分支
git pull origin master   //可選谴蔑,獲取最新版本
git checkout -b develop master
發(fā)布develop分支
git push -u origin develop
2. 創(chuàng)建feature分支
從develop拉出feature_v1.0功能分支
git pull origin develop   //可選豌骏,獲取最新版本
git checkout -b feature_v1.0 develop
發(fā)布feature_v1.0分支
git push -u origin feature_v1.0
在feature_v1.0上開發(fā)一些功能
3. 完成feature,合并到develop分支
develop分支獲取最新
git pull origin develop
切換到develop分支
git checkout develop
從feature分支合并到develop分支
git merge --no-ff feature_v1.0
刪除feature分支隐锭,也可以不刪除
git branch -d feature_v1.0
4. 開始release
從develop拉出一個release分支
git pull origin develop   //可選窃躲,獲取最新版本
git checkout -b release_v1.0 develop
fix bugs
5. 完成release,合并到master分支和develop分支钦睡,在master打上tag標(biāo)記
合并到master
git checkout master
git merge --no-ff release_v1.0
在master打tag標(biāo)記
git tag release1.0 master
git push --tags
合并到develop
git checkout develop
git merge --no-ff release_v1.0
6. 開始hotfix
從主線master拉出一個hotfix分支
git pull origin master   //可選蒂窒,獲取最新版本
git checkout -b hotfix_v1.0.1 master
7. 完成hotfix,合并到master和develop荞怒,并在master上打tag洒琢。
合并hotfix_v1.0.1到master
git checkout master
git merge --no-ff hotfix_v1.0.1
在master打上tag
git tag hotfix1.0.1 master
git push --tags
合并hotfix_v1.0.1到develop
git checkout develop
git merge --no-ff hotfix_v1.0.1

分支命名規(guī)范:

feature分支:以"feature_"開頭,如feature_v1.1
release分支:以"release_"開頭褐桌,如release_v1.1
hotfix分支:以"hotfix_"開頭衰抑,如hotfix_20160112
tag標(biāo)記:如果是release分支合并,則以"release_"開頭荧嵌。如果是hotfix分支合并呛踊,則以"hotfix_"開頭。
master分支每次提交都要打tag啦撮,release tag:如release_v1.1恋技,hotfix tag:如hotfix_20160112
命名都統(tǒng)一采用小寫。

總結(jié):

  1. 一定要按git flow的流程去管理分支逻族,如feature分支開發(fā)完要合并到develop蜻底,如果要發(fā)布版本到test環(huán)境,則從develop拉出一個release分支聘鳞,release完成后要合并回master和develop分支薄辅,修復(fù)生產(chǎn)環(huán)境問題需要從master拉出一個hotfix分支,hotfix完成后要合并回master和develop分支抠璃,并且在master打上tag站楚。
  2. 一定要按分支命名規(guī)范來命名,便于管理和維護(hù)搏嗡。
  3. 了解了git flow工作流程后窿春,可以不使用git flow GUI工具拉一,手動操作即可,可以是原生git命令+vs配合操作旧乞,比如給master打tag就要用git命令蔚润,這在vs里操作不了的,比如合并分支尺栖,雖然也可以使用git命令實現(xiàn)嫡纠,但在vs里操作更方便直觀。
  4. 一定要保持分支的純凈延赌,不要隨便污染分支除盏。比如,develop分支只包含要發(fā)布到下一個release的代碼挫以,在沒有拉出release分支前不要合并新的feature分支進(jìn)來者蠕。release分支基于develop分支創(chuàng)建,拉出release分支后掐松,我們可以在這個release分支上測試和修復(fù)bug踱侣,但是,一旦打了release分支后不要從develop分支合并新的改動過來甩栈。develop拉出release分支的同時泻仙,也意味著develop分支可以開始下一個release的準(zhǔn)備工作了。
  5. 如果多個版本并行到test環(huán)境量没,怎么解決這個問題玉转?如下圖。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殴蹄,一起剝皮案震驚了整個濱河市究抓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袭灯,老刑警劉巖刺下,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異稽荧,居然都是意外死亡橘茉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門姨丈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畅卓,“玉大人,你說我怎么就攤上這事蟋恬∥膛耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵歼争,是天一觀的道長拜马。 經(jīng)常有香客問我渗勘,道長,這世上最難降的妖魔是什么俩莽? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任旺坠,我火速辦了婚禮,結(jié)果婚禮上豹绪,老公的妹妹穿的比我還像新娘价淌。我一直安慰自己申眼,他們只是感情好瞒津,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著括尸,像睡著了一般巷蚪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上濒翻,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天屁柏,我揣著相機與錄音,去河邊找鬼有送。 笑死淌喻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雀摘。 我是一名探鬼主播裸删,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阵赠!你這毒婦竟也來了涯塔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤清蚀,失蹤者是張志新(化名)和其女友劉穎匕荸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枷邪,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡榛搔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了东揣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践惑。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖救斑,靈堂內(nèi)的尸體忽然破棺而出童本,到底是詐尸還是另有隱情,我是刑警寧澤脸候,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布穷娱,位于F島的核電站绑蔫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泵额。R本人自食惡果不足惜配深,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫁盲。 院中可真熱鬧篓叶,春花似錦、人聲如沸羞秤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘾蛋。三九已至俐镐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哺哼,已是汗流浹背佩抹。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留取董,地道東北人棍苹。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像茵汰,于是被迫代替她去往敵國和親枢里。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

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