一、Git Flow 簡(jiǎn)介Git Flow 定義了一個(gè)圍繞項(xiàng)目開(kāi)發(fā)發(fā)布的嚴(yán)格 git 分支模型,用于管理多人協(xié)作的大型項(xiàng)目中實(shí)現(xiàn)高效的協(xié)作開(kāi)發(fā);Git Flow 分支模型最早起源于 Vincent Driessen 的 A successful Git branching model 文章;隨著時(shí)間發(fā)展,Git Flow 大致分為三種:
關(guān)于三種 Git Flow 區(qū)別詳情可參考 Git 工作流程 二、 Git Flow 流程Github Flow 和 GitLab Flow 對(duì)于持續(xù)發(fā)布支持比較好,但是原始版本的 Git Flow 對(duì)于傳統(tǒng)的按照版本發(fā)布更加友好一些,所以以下主要說(shuō)明以下 Git Flow 的工作流程;Git Flow 主要分支模型如下
在整個(gè)分支模型中 存在兩個(gè)長(zhǎng)期分支: develop 和 master,其中 develop 分支為開(kāi)發(fā)分支,master 為生產(chǎn)分支;master 代碼始終保持隨時(shí)可以部署到線上的狀態(tài);develop 分支用于合并最新提交的功能性代碼;具體的分支定義如下
在整個(gè)分支模型中,develop 分支為最上游分支,會(huì)不斷有新的 feature 合并入 develop 分支,當(dāng)功能開(kāi)發(fā)達(dá)到完成所有版本需求時(shí),則從 develop 分支創(chuàng)建 release 分支,release 后如沒(méi)有發(fā)現(xiàn)其他問(wèn)題,最終 release 會(huì)被合并到 master 分支以完成線上部署 三、Git Flow 工具針對(duì)于 Git Flow,其手動(dòng)操作 git 命令可能過(guò)于繁瑣,所以后來(lái)有了 git-flow 工具;git-flow 是一個(gè) git 擴(kuò)展集,按 Vincent Driessen 的分支模型提供高層次的庫(kù)操作;使用 git-flow 工具可以以更加簡(jiǎn)單的命令完成對(duì) Vincent Driessen 分支模型的實(shí)踐;git-flow 安裝以及使用具體請(qǐng)參考 git-flow 備忘清單,該文章詳細(xì)描述了 git-flow 工具的使用方式 還有另一個(gè)工具是 git-extras,該工具沒(méi)有 git-flow 那么簡(jiǎn)單化,不過(guò)其提供更加強(qiáng)大的命令支持 四、Git Commit Message在整個(gè) Git Flow 中,commit message 也是必不可少的一部分;一個(gè)良好且統(tǒng)一的 commit message 有助于代碼審計(jì)以及 review 等;目前使用最廣泛的寫(xiě)法是 Angular 社區(qū)規(guī)范,該規(guī)范大中 commit message 格式大致如下: <type>(<scope>): <subject>總體格式大致分為 3 部分,首行主要 3 個(gè)組成部分:
關(guān)于 type 提交類型,有如下幾種值:
中間的 body 部分是對(duì)本次提交的詳細(xì)描述信息,底部的 footer 部分一般分為兩種情況:
不過(guò) footer 部分也有特殊情況,如回滾某次提交,則以 五、Git Commit Message 工具針對(duì) Git 的 commit message 目前已經(jīng)有了成熟的生成工具,比較有名的為 commitizen-cli 工具,其采用 node.js 編寫(xiě),執(zhí)行
六、GitLab 整合以上 Git Flow 所有操作介紹的都是在本地操作,而正常我們?cè)诠ぷ髦卸际腔?GitLab 搭建私有 Git 倉(cāng)庫(kù)來(lái)進(jìn)行協(xié)同開(kāi)發(fā)的,以下簡(jiǎn)述以下 Git Flow 配合 GitLab 的流程 6.1、開(kāi)發(fā) features當(dāng)開(kāi)發(fā)一個(gè)新功能時(shí)流程如下:
6.2、創(chuàng)建 release當(dāng)一定量的 feature 開(kāi)發(fā)完成并合并到 develop 后,如所有 feature 都測(cè)試通過(guò)并滿足版本需求,則可以創(chuàng)建 release 版本分支;release 分支流程如下
6.3、緊急修復(fù)當(dāng) master 某個(gè) tag 部署到生產(chǎn)環(huán)境后,也可能出現(xiàn)不符合預(yù)期的問(wèn)題出現(xiàn);此時(shí)應(yīng)該基于 master 創(chuàng)建 hotfix 分支進(jìn)行修復(fù),流程如下
|
|
|
來(lái)自: InfoRich > 《項(xiàng)目管理》