小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Git Flow實(shí)戰(zhàn)

 InfoRich 2022-01-25

一、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 大致分為三種:

  • Git Flow: 最原始的 Git Flow 分支模型

  • Github Flow: Git Flow 的簡(jiǎn)化版,專門(mén)配合持續(xù)發(fā)布

  • GitLab Flow: Git Flow 與 Github Flow 的結(jié)合版

關(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 主要分支模型如下

Image

在整個(gè)分支模型中 存在兩個(gè)長(zhǎng)期分支: develop 和 master,其中 develop 分支為開(kāi)發(fā)分支,master 為生產(chǎn)分支;master 代碼始終保持隨時(shí)可以部署到線上的狀態(tài);develop 分支用于合并最新提交的功能性代碼;具體的分支定義如下

  • master: 生產(chǎn)代碼,始終保持可以直接部署生產(chǎn)的狀態(tài)

  • develop: 開(kāi)發(fā)分支,每次合并最新功能代碼到此分支

  • feature: 新功能分支,所有新開(kāi)發(fā)的功能將采用 feature/xxxx 形式命名分支

  • hotfixes: 緊急修復(fù)補(bǔ)丁分支,當(dāng)新功能部署到了線上出現(xiàn)了嚴(yán)重 bug 需要緊急修復(fù)時(shí),則創(chuàng)建 hotfixes/xxxx 形式命名的分支

  • release: 穩(wěn)定版分支,當(dāng)完成大版本變動(dòng)后,應(yīng)該創(chuàng)建 release/xxxx 分支

在整個(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>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

總體格式大致分為 3 部分,首行主要 3 個(gè)組成部分:

  • type: 本次提交類型

  • scope: 本次提交影響范圍,一般標(biāo)明影響版本號(hào)或者具體的范圍如 $browser, $compile, $rootScope, ngHref, ngClick, ngView, etc...

  • subject: 本次提交簡(jiǎn)短說(shuō)明

關(guān)于 type 提交類型,有如下幾種值:

  • feat:新功能(feature)

  • fix:修補(bǔ) bug

  • docs:文檔(documentation)

  • style:格式(不影響代碼運(yùn)行的變動(dòng))

  • refactor:重構(gòu)(即不是新增功能,也不是修改 bug 的代碼變動(dòng))

  • test:增加測(cè)試

  • chore:構(gòu)建過(guò)程或輔助工具的變動(dòng)

中間的 body 部分是對(duì)本次提交的詳細(xì)描述信息,底部的 footer 部分一般分為兩種情況:

  • 不兼容變動(dòng): 如果出現(xiàn)不兼容變動(dòng),則以 BREAKING CHANGE: 開(kāi)頭,后面跟上不兼容變動(dòng)的具體描述和解決辦法

  • 關(guān)閉 issue: 如果該 commit 針對(duì)某個(gè) issue,并且可以將其關(guān)閉,則可以在其中指定關(guān)閉的 issue,如 Close #9527,#9528

不過(guò) footer 部分也有特殊情況,如回滾某次提交,則以 revert: 開(kāi)頭,后面緊跟 commit 信息和具體描述;還有時(shí)某些 commit 只是解決了 某個(gè) issue 的一部分問(wèn)題,這是可以使用 refs ISSUE 的方式來(lái)引用該 issue

五、Git Commit Message 工具

針對(duì) Git 的 commit message 目前已經(jīng)有了成熟的生成工具,比較有名的為 commitizen-cli 工具,其采用 node.js 編寫(xiě),執(zhí)行 git cz 命令能夠自動(dòng)生成符合 Angular 社區(qū)規(guī)范的 commit message;不過(guò)由于其使用 node.js 編寫(xiě),所以安裝前需要安裝 node.js,因此可能不適合其他非 node.js 的項(xiàng)目使用;這里推薦一個(gè)基于 shell 編寫(xiě)的 Git-toolkit,安裝此工具后執(zhí)行 git ci 命令進(jìn)行提交將會(huì)產(chǎn)生交互式生成 Angular git commit message 格式的提交說(shuō)明,截圖如下:

Image

六、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í)流程如下:

  • 本地 git flow feature start xxxx 開(kāi)啟一個(gè) feature 新分支

  • git flow feature publish xxxx 將此分支推送到遠(yuǎn)端以便他人獲取

  • 完成開(kāi)發(fā)后 GitLab 上向 develop 分支發(fā)起合并請(qǐng)求

  • CI sonar 等質(zhì)量檢測(cè)工具掃描,其他用戶 review 代碼

  • 確認(rèn)無(wú)誤后 master 權(quán)限用戶合并其到 develop 分支

  • 部署到測(cè)試環(huán)境以便測(cè)試組測(cè)試

  • 如果測(cè)試不通過(guò),則繼續(xù)基于此分支開(kāi)發(fā),直到該功能開(kāi)發(fā)完成

6.2、創(chuàng)建 release

當(dāng)一定量的 feature 開(kāi)發(fā)完成并合并到 develop 后,如所有 feature 都測(cè)試通過(guò)并滿足版本需求,則可以創(chuàng)建 release 版本分支;release 分支流程如下

  • 本地 git flow release start xxxx 開(kāi)啟 release 分支

  • git flow release publish xxxx 將其推送到遠(yuǎn)端以便他人獲取

  • 繼續(xù)進(jìn)行完整性測(cè)試,出現(xiàn)問(wèn)題繼續(xù)修復(fù),直到 release 完全穩(wěn)定

  • 從 release 分支向 master、develop 分支分別發(fā)起合并請(qǐng)求

  • master 合并后創(chuàng)建對(duì)應(yīng)的 release 標(biāo)簽,并部署生產(chǎn)環(huán)境

  • develop 合并 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ù),流程如下

  • 本地 git flow hotfix start xxxx 創(chuàng)建緊急修復(fù)分支

  • 修改代碼后將其推送到遠(yuǎn)端,并像 master、develop 分支發(fā)起合并

  • develop 合并緊急修復(fù)補(bǔ)丁,如果必要最好再做一下測(cè)試

  • master 合并緊急修復(fù)補(bǔ)丁,創(chuàng)建緊急修復(fù) tag,并部署生產(chǎn)環(huán)境

來(lái)源: 

https:///2017/09/05/git-flow-note/


☆ END ☆

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多