簡介
? ? ? ? 分支開發(fā)(branch development)。它的特點(diǎn)就是項(xiàng)目的功能開發(fā)工作主要在從master主分支切出來的fe ature分支上垦藏。根據(jù)功能代碼開發(fā)完畢后的項(xiàng)目發(fā)布披蕉,就出現(xiàn)了兩種不同的發(fā)布模式:
? ? ? ? ? ? ? ? 分支開發(fā)-主干發(fā)布
? ? ? ? ? ? ? ? 分支開發(fā)-分支發(fā)布-合并回主干
案例需求:
? ? ? ? n月 1 日 A項(xiàng)目發(fā)布1.0版本
? ? ? ? n 月 2 日 A項(xiàng)目著手開發(fā)1.1 版本的新功能
? ? ? ? n月 7 日 線上運(yùn)行A項(xiàng)目的1.0版本出現(xiàn)問題颈畸,并與當(dāng)日修復(fù)并發(fā)布1.01版本
? ? ? ? n月 16日 線上運(yùn)行A項(xiàng)目的1.0版本出現(xiàn)問題,并與當(dāng)日修復(fù)并發(fā)布1.02版本 n 月 20日 A項(xiàng)目完成新版本功能没讲,并發(fā)布1.1版本
注意:
? ? ? ? 1.01和1.02的修復(fù)代碼過程不影響1.1正常發(fā)布
? ? ? ? 1.1 版本包含 1.01和1.02的修復(fù)代碼功能
1. 分支開發(fā)-主干發(fā)布
分支開發(fā)-主干發(fā)布簡介
? ? ? ?分支開發(fā)-主干發(fā)布眯娱。它的特點(diǎn)就是項(xiàng)目的功能開發(fā)工作在從master主分支切出來的feature分支上,代碼開發(fā)完畢后爬凑,經(jīng)過功能測試沒有問題后徙缴,在正式代碼發(fā)布之前,先從master主分支獲取最新/最完整的代碼嘁信,合并到當(dāng)前的feature分支上于样,進(jìn)行整合功能測試,測試通過后潘靖,就將代碼合并到master主功能分支上穿剖,發(fā)布代碼的時(shí)候,只需要打一個(gè)release標(biāo)簽即可卦溢。如果進(jìn)行下一個(gè)功能版本開發(fā)糊余,那么就從master分支切出一個(gè)新的fea ture分支即可。
? ? ? ?如果線上代碼出現(xiàn)bug单寂,那么就從master分支上切出來一個(gè)bug分支贬芥,修復(fù)該bug即可。
代碼開發(fā)效果
代碼開發(fā)原則
- 只能在功能feature分支上開發(fā)凄贩,不能直接在master主分支上開發(fā)
- feature分支代碼開發(fā)完畢后誓军,代碼功能必須通過測試
- feature分支在合并到master分支前,獲取最新的master分支內(nèi)容疲扎,合并后進(jìn)行功能測試昵时,再合并到ma
ster- feature分支合并到master主分支后,應(yīng)該停用該feature分支椒丧,最好刪除壹甥。
- master主干上的每一次發(fā)布都是做了一個(gè)release標(biāo)簽而不是分支。
優(yōu)勢:
? ? ? ?常見的一種代碼開發(fā)方式壶熏。
? ? ? ?團(tuán)隊(duì)人員在自己的feature分支工作句柠,隔離其他工作的變動多個(gè)功能使用feature分支并行開發(fā),互不影響
? ? ? ?因?yàn)槎际敲看喂δ艽a發(fā)布都是在之前基礎(chǔ)上,所以代碼內(nèi)容調(diào)整起來比較容易溯职,即使有沖突也可以快速解決
劣勢:
? ? ? ?feature分支最終要合并到master分支精盅,若feature分支間代碼有交互,導(dǎo)致master合并沖突(文件谜酒、語意)
? ? ? ?feature分支代碼測試叹俏,需要單獨(dú)建立測試流水線,浪費(fèi)資源僻族,而且并未真正實(shí)施項(xiàng)目集成測試粘驰。
2. 分支開發(fā)-分支發(fā)布
分支開發(fā)-分支發(fā)布簡介
? ? ? ?分支開發(fā)-分支發(fā)布的特點(diǎn)就是項(xiàng)目的功能開發(fā)工作在從master主分支切出來的feature分支上,代碼開發(fā)完畢后述么,經(jīng)過功能測試沒有問題后蝌数,然后直接在當(dāng)前feature分支上進(jìn)行代碼發(fā)布,發(fā)布后度秘,將feature分支的代碼合并到master主分支上顶伞。如果進(jìn)行下一個(gè)功能版本開發(fā),那么就從master分支再切出一個(gè)新的feature分支即可剑梳。
? ? ? ?如果線上代碼出現(xiàn)bug枝哄,那么就可以直接在feature分支上修復(fù),修復(fù)后阻荒,將代碼合并回master分支;如果b ug功能很重要众羡,可以單獨(dú)從master分支上再切一個(gè)bug分支來修改侨赡。
分支開發(fā)-分支發(fā)布流程
代碼開發(fā)原則
1. 只能在功能feature分支上開發(fā),不能直接在master主分支上開發(fā)粱侣。
2. feature分支代碼開發(fā)完畢后羊壹,代碼功能必須通過測試。
3. feature分支代碼功能通過測試后齐婴,直接進(jìn)行代碼發(fā)布油猫。
4. feature分支代碼發(fā)布后,將最終代碼合并到master主分支柠偶,該feature分支作為版本可以一直存在下去優(yōu)勢:
? ? ? ?最常見的代碼開發(fā)方式
? ? ? ?多個(gè)功能使用feature分支并行開發(fā)情妖,互不影響
? ? ? ?可以選擇指定的feature分支進(jìn)行代碼發(fā)布,不會被其他功能阻塞诱担。
劣勢:
? ? ? ?feature分支最終要合并到master上毡证,若feature分支間代碼有交互,導(dǎo)致合并沖突(文件蔫仙、語意)料睛。
? ? ? ?feature分支發(fā)布后容易忘記合并回master主干。
? ? ? ?feature分支代碼測試,需要單獨(dú)建立測試流水線恤煞,浪費(fèi)資源屎勘,而且并未真正實(shí)施項(xiàng)目集成測試。
常見場景:
? ? ? ?開源項(xiàng)目居扒、多產(chǎn)品線的項(xiàng)目
3. 小結(jié)
? ? ? ?分支開發(fā)分類:分支開發(fā)-主干發(fā)布概漱、分支開發(fā)-分支發(fā)布
? ? ? ?主干發(fā)布流程:拉取-開發(fā)-測試-拉取-測試-合并-發(fā)布(標(biāo)簽)-循環(huán)分支發(fā)布流程:拉取-開發(fā)-測試-發(fā)布-合并-循環(huán)