3.4 分支開發(fā)工作流

2018-02-24 15:22 更新

分支開發(fā)工作流

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

長(zhǎng)期分支

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

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

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

Figure 3-19. 漸進(jìn)穩(wě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)沒有在其他的版本控制系統(tǒng)(VCS)上這么做過(guò),因?yàn)樵谀切┌姹究刂葡到y(tǒng)中創(chuàng)建和合并分支通常很費(fèi)勁。然而,在 Git 中一天之內(nèi)多次創(chuàng)建、使用、合并、刪除分支都很常見。

你已經(jīng)在上一節(jié)中你創(chuàng)建的 iss53hotfix 特性分支中看到過(guò)這種用法。你在上一節(jié)用到的特性分支(iss53hotfix 分支)中提交了一些更新,并且在它們合并入主干分支之后,你又刪除了它們。這項(xiàng)技術(shù)能使你快速并且完整地進(jìn)行上下文切換(context-switch)——因?yàn)槟愕墓ぷ鞅环稚⒌讲煌牧魉€中,在不同的流水線中每個(gè)分支都僅與其目標(biāo)特性相關(guān),因此,在做代碼審查之類的工作的時(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è)樣子:

Figure 3-21. 合并了 dumbideaiss91v2 分支之后的提交歷史

我們將會(huì)在 Chapter?5 中向你揭示更多有關(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ù)中 —— 沒有與服務(wù)器發(fā)生交互。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)