從技術(shù)上將,這意味著,Alice創(chuàng)建了一個(gè)Git的遠(yuǎn)程節(jié)點(diǎn),而對(duì)于Bob,該節(jié)點(diǎn)指向了Bob的版本庫(kù),反之亦然。
主分支
在核心部分,研發(fā)模型很大程度上靠其他現(xiàn)有模型支撐的。中心庫(kù)有2個(gè)可一直延續(xù)的分支:
master分支
develop分支
每個(gè)Git用戶都要熟悉原始的master分支。與master分支并行的另一個(gè)分支,我們稱之為develop分支。
我們把原始庫(kù)/master庫(kù)認(rèn)作為主分支,HEAD的源代碼存在于此版本中,并且隨時(shí)都是一個(gè)預(yù)備生產(chǎn)狀態(tài)。
輔助性分支
我們的開發(fā)模型使用了各種輔助性分支,這些分支與關(guān)鍵分支(master和develop)一起,用來支持團(tuán)隊(duì)成員們并行開發(fā),使得易于追蹤功能,協(xié)助生產(chǎn)發(fā)布環(huán)境準(zhǔn)備,以及快速修復(fù)實(shí)時(shí)在線問題。與關(guān)鍵分支不同,這些分支總是有一個(gè)有限的生命期,因?yàn)樗麄兘K會(huì)被移除。
我們用到的分支類型包括:
功能分支
發(fā)布分支
熱修復(fù)分支
每一種分支有一個(gè)特定目的,并且受限于嚴(yán)格到規(guī)則,比如:可以用哪些分支作為源分支,哪些分支能作為合并目標(biāo)。我們馬上將進(jìn)行演練。
從技術(shù)角度來看,這些分支絕不是特殊分支。分支的類型基于我們使用的方法來進(jìn)行分類。它們理所當(dāng)然是普通的Git分支。
功能分支
可能是develop分支的分支版本,終必須合并到develop分支中。
分支命名規(guī)則:除了master、develop、release-*、orhotfix-*之外,其他命名均可。
功能分支(有時(shí)被稱為topic分支)通常為即將發(fā)布或者未來發(fā)布版開發(fā)新的功能。當(dāng)新功能開始研發(fā),包含該功能的發(fā)布版本在這個(gè)還是無法確定發(fā)布時(shí)間的。功能版本的實(shí)質(zhì)是只要這個(gè)功能處于開發(fā)狀態(tài)它會(huì)存在,但是終會(huì)或合并到develop分支(確定將新功能添加到不久的發(fā)布版中)或取消(譬如一次令人失望的測(cè)試)。