Git 深入 - 分支開(kāi)發(fā)工作流

分支開(kāi)發(fā)工作流

現(xiàn)在你已經(jīng)學(xué)會(huì)新建和合并分支伤极,那么你可以或者應(yīng)該用它來(lái)做些什么呢谎懦? 在本節(jié)鲫咽,我們會(huì)介紹一些常見(jiàn)的利用分支進(jìn)行開(kāi)發(fā)的工作流程签赃。而正是由于分支管理的便捷,才衍生出這些典型的工作模式分尸,你可以根據(jù)項(xiàng)目實(shí)際情況選擇一種用用看锦聊。

長(zhǎng)期分支

因?yàn)?Git 使用簡(jiǎn)單的三方合并,所以就算在一段較長(zhǎng)的時(shí)間內(nèi)箩绍,反復(fù)把一個(gè)分支合并入另一個(gè)分支孔庭,也不是什么難事。 也就是說(shuō)材蛛,在整個(gè)項(xiàng)目開(kāi)發(fā)周期的不同階段圆到,你可以同時(shí)擁有多個(gè)開(kāi)放的分支;你可以定期地把某些特性分支合并入其他分支中卑吭。

許多使用 Git 的開(kāi)發(fā)者都喜歡使用這種方式來(lái)工作芽淡,比如只在 master 分支上保留完全穩(wěn)定的代碼——有可能僅僅是已經(jīng)發(fā)布或即將發(fā)布的代碼。 他們還有一些名為 develop 或者 next 的平行分支豆赏,被用來(lái)做后續(xù)開(kāi)發(fā)或者測(cè)試穩(wěn)定性——這些分支不必保持絕對(duì)穩(wěn)定挣菲,但是一旦達(dá)到穩(wěn)定狀態(tài),它們就可以被合并入 master 分支了掷邦。 這樣白胀,在確保這些已完成的特性分支(短期分支,比如之前的 iss53 分支)能夠通過(guò)所有測(cè)試抚岗,并且不會(huì)引入更多 bug 之后纹笼,就可以合并入主干分支中,等待下一次的發(fā)布苟跪。

事實(shí)上我們剛才討論的廷痘,是隨著你的提交而不斷右移的指針蔓涧。 穩(wěn)定分支的指針總是在提交歷史中落后一大截,而前沿分支的指針往往比較靠前笋额。

漸進(jìn)穩(wěn)定分支的線(xiàn)性圖元暴。

Figure 26. 漸進(jìn)穩(wěn)定分支的線(xiàn)性圖

通常把他們想象成流水線(xiàn)(work silos)可能更好理解一點(diǎn),那些經(jīng)過(guò)測(cè)試考驗(yàn)的提交會(huì)被遴選到更加穩(wěn)定的流水線(xiàn)上去兄猩。

漸進(jìn)穩(wěn)定分支的工作流(“silo”)視圖茉盏。

Figure 27. 漸進(jìn)穩(wěn)定分支的流水線(xiàn)(“silo”)視圖

你可以用這種方法維護(hù)不同層次的穩(wěn)定性。 一些大型項(xiàng)目還有一個(gè) proposed(建議) 或 pu: proposed updates(建議更新)分支枢冤,它可能因包含一些不成熟的內(nèi)容而不能進(jìn)入 next 或者 master 分支鸠姨。 這么做的目的是使你的分支具有不同級(jí)別的穩(wěn)定性;當(dāng)它們具有一定程度的穩(wěn)定性后淹真,再把它們合并入具有更高級(jí)別穩(wěn)定性的分支中讶迁。 再次強(qiáng)調(diào)一下,使用多個(gè)長(zhǎng)期分支的方法并非必要核蘸,但是這么做通常很有幫助巍糯,尤其是當(dāng)你在一個(gè)非常龐大或者復(fù)雜的項(xiàng)目中工作時(shí)。

特性分支

特性分支對(duì)任何規(guī)模的項(xiàng)目都適用客扎。 特性分支是一種短期分支祟峦,它被用來(lái)實(shí)現(xiàn)單一特性或其相關(guān)工作。 也許你從來(lái)沒(méi)有在其他的版本控制系統(tǒng)(VCS)上這么做過(guò)徙鱼,因?yàn)樵谀切┌姹究刂葡到y(tǒng)中創(chuàng)建和合并分支通常很費(fèi)勁宅楞。 然而,在 Git 中一天之內(nèi)多次創(chuàng)建袱吆、使用厌衙、合并、刪除分支都很常見(jiàn)杆故。

你已經(jīng)在上一節(jié)中你創(chuàng)建的 iss53hotfix 特性分支中看到過(guò)這種用法迅箩。 你在上一節(jié)用到的特性分支(iss53hotfix 分支)中提交了一些更新,并且在它們合并入主干分支之后处铛,你又刪除了它們饲趋。 這項(xiàng)技術(shù)能使你快速并且完整地進(jìn)行上下文切換(context-switch)——因?yàn)槟愕墓ぷ鞅环稚⒌讲煌牧魉€(xiàn)中,在不同的流水線(xiàn)中每個(gè)分支都僅與其目標(biāo)特性相關(guān)撤蟆,因此奕塑,在做代碼審查之類(lèi)的工作的時(shí)候就能更加容易地看出你做了哪些改動(dòng)。 你可以把做出的改動(dòng)在特性分支中保留幾分鐘家肯、幾天甚至幾個(gè)月龄砰,等它們成熟之后再合并,而不用在乎它們建立的順序或工作進(jìn)度。

考慮這樣一個(gè)例子换棚,你在 master 分支上工作到 C1式镐,這時(shí)為了解決一個(gè)問(wèn)題而新建 iss91 分支,在 iss91分支上工作到 C4固蚤,然而對(duì)于那個(gè)問(wèn)題你又有了新的想法娘汞,于是你再新建一個(gè) iss91v2 分支試圖用另一種方法解決那個(gè)問(wèn)題,接著你回到 master 分支工作了一會(huì)兒夕玩,你又冒出了一個(gè)不太確定的想法你弦,你便在 C10的時(shí)候新建一個(gè) dumbidea 分支,并在上面做些實(shí)驗(yàn)燎孟。 你的提交歷史看起來(lái)像下面這個(gè)樣子:

擁有多個(gè)特性分支的提交歷史禽作。

Figure 28. 擁有多個(gè)特性分支的提交歷史

現(xiàn)在,我們假設(shè)兩件事情:你決定使用第二個(gè)方案來(lái)解決那個(gè)問(wèn)題揩页,即使用在 iss91v2 分支中方案旷偿;另外,你將 dumbidea 分支拿給你的同事看過(guò)之后碍沐,結(jié)果發(fā)現(xiàn)這是個(gè)驚人之舉狸捅。 這時(shí)你可以?huà)仐?iss91 分支(即丟棄 C5C6 提交)衷蜓,然后把另外兩個(gè)分支合并入主干分支累提。 最終你的提交歷史看起來(lái)像下面這個(gè)樣子:

合并了 `dumbidea` 和 `iss91v2` 分支之后的提交歷史。

Figure 29. 合并了 dumbideaiss91v2 分支之后的提交歷史

我們將會(huì)在 分布式 Git 中向你揭示更多有關(guān)分支工作流的細(xì)節(jié)磁浇,因此斋陪,請(qǐng)確保你閱讀完那個(gè)章節(jié)之后,再來(lái)決定你的下個(gè)項(xiàng)目要使用什么樣的分支策略(branching scheme)置吓。

請(qǐng)牢記无虚,當(dāng)你做這么多操作的時(shí)候,這些分支全部都存于本地衍锚。 當(dāng)你新建和合并分支的時(shí)候友题,所有這一切都只發(fā)生在你本地的 Git 版本庫(kù)中 —— 沒(méi)有與服務(wù)器發(fā)生交互。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戴质,一起剝皮案震驚了整個(gè)濱河市度宦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌告匠,老刑警劉巖戈抄,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異后专,居然都是意外死亡划鸽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)裸诽,“玉大人嫂用,你說(shuō)我怎么就攤上這事≌啥” “怎么了尸折?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)殷蛇。 經(jīng)常有香客問(wèn)我实夹,道長(zhǎng),這世上最難降的妖魔是什么粒梦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任亮航,我火速辦了婚禮,結(jié)果婚禮上匀们,老公的妹妹穿的比我還像新娘缴淋。我一直安慰自己,他們只是感情好泄朴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布重抖。 她就那樣靜靜地躺著,像睡著了一般祖灰。 火紅的嫁衣襯著肌膚如雪钟沛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天局扶,我揣著相機(jī)與錄音恨统,去河邊找鬼。 笑死三妈,一個(gè)胖子當(dāng)著我的面吹牛畜埋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畴蒲,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼悠鞍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了模燥?” 一聲冷哼從身側(cè)響起咖祭,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涧窒,沒(méi)想到半個(gè)月后心肪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纠吴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年硬鞍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡固该,死狀恐怖锅减,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伐坏,我是刑警寧澤怔匣,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站桦沉,受9級(jí)特大地震影響每瞒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纯露,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一剿骨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧埠褪,春花似錦浓利、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至渴语,卻和暖如春苹威,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遵班。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工屠升, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留潮改,地道東北人狭郑。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汇在,于是被迫代替她去往敵國(guó)和親翰萨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350