1. Git 分支設(shè)計規(guī)范

        共 3012字,需瀏覽 7分鐘

         ·

        2020-03-25 23:24

        ? ? ? ? ? ? ? ? ? ? 概述

        這篇文章分享 Git 分支設(shè)計規(guī)范,目的是提供給研發(fā)人員做參考。

        規(guī)范是死的,人是活的,希望自己定的規(guī)范,不要被打臉。

        在說 Git 分支規(guī)范之前,先說下在系統(tǒng)開發(fā)過程中常用的環(huán)境。
        簡稱全稱
        DEVDevelopment environment
        FATFeature Acceptance Test environment
        UATUser Acceptance Test environment
        PROProduction environment


        • DEV 環(huán)境:用于開發(fā)者調(diào)試使用。
        • FAT 環(huán)境:功能驗收測試環(huán)境,用于測試環(huán)境下的軟件測試者測試使用。
        • UAT 環(huán)境:用戶驗收測試環(huán)境,用于生產(chǎn)環(huán)境下的軟件測試者測試使用。
        • PRO 環(huán)境:就是生產(chǎn)環(huán)境。

        比如,項目域名為:http://www.abc.com,那么相關(guān)環(huán)境的域名可這樣配置:

        • DEV 環(huán)境:本地配置虛擬域名即可

        • FAT 環(huán)境:http://fat.abc.com
        • UAT 環(huán)境:http://uat.abc.com
        • PRO 環(huán)境:http://www.abc.com

        接下來,針對不同的環(huán)境來設(shè)計分支。

        分支

        分支名稱環(huán)境可訪問
        master主分支PRO
        release預(yù)上線分支UAT
        hotfix緊急修復(fù)分支DEV
        develop測試分支FAT
        feature需求開發(fā)分支DEV

        master 分支

        master 為主分支,用于部署到正式環(huán)境(PRO),一般由 releasehotfix ?分支合并,任何情況下不允許直接在 master 分支上修改代碼。

        release 分支

        release 為預(yù)上線分支,用于部署到預(yù)上線環(huán)境(UAT),始終保持與 master 分支一致,一般由 develophotfix 分支合并,不建議直接在 release 分支上直接修改代碼。

        如果在 release 分支測試出問題,需要回歸驗證 develop 分支看否存在此問題。

        hotfix 分支

        hotfix 為緊急修復(fù)分支,命名規(guī)則為 hotfix- 開頭。

        當(dāng)線上出現(xiàn)緊急問題需要馬上修復(fù)時,需要基于 releasemaster 分支創(chuàng)建 hotfix 分支,修復(fù)完成后,再合并到 releasedevelop 分支,一旦修復(fù)上線,便將其刪除。

        develop 分支

        develop 為測試分支,用于部署到測試環(huán)境(FAT),始終保持最新完成以及 bug 修復(fù)后的代碼,可根據(jù)需求大小程度確定是由 feature 分支合并,還是直接在上面開發(fā)。

        一定是滿足測試的代碼才能往上面合并或提交。

        feature 分支

        feature 為需求開發(fā)分支,命名規(guī)則為 feature- 開頭,一旦該需求上線,便將其刪除。

        這么說可能有點不容易理解,接下來舉幾個開發(fā)場景。

        開發(fā)場景

        新需求加入

        有一個訂單管理的新需求需要開發(fā),首先要創(chuàng)建一個 feature-order 分支,問題來了,該分支是基于哪個分支創(chuàng)建?

        如果 存在 未測試完畢的需求,就基于 master 創(chuàng)建。

        如果 不存在 未測試完畢的需求,就基于 develop 創(chuàng)建。

        1. 需求在 feature-order 分支開發(fā)完畢,準(zhǔn)備提測時,要先確定 develop 不存在未測試完畢的需求,這時研發(fā)人員才能將將代碼合并到 develop (測試環(huán)境)供測試人員測試。

        2. 測試人員在 develop (測試環(huán)境) 測試通過后,研發(fā)人員再將代碼發(fā)布到 release (預(yù)上線環(huán)境)供測試人員測試。

        3. 測試人員在 release (預(yù)上線環(huán)境)測試通過后,研發(fā)人員再將代碼發(fā)布到 master (正式環(huán)境)供測試人員測試。

        4. 測試人員在 master (正式環(huán)境) 測試通過后,研發(fā)人員需要刪除 feature-order 分支。

        普通迭代

        有一個訂單管理的迭代需求,如果開發(fā)工時 < 1d,直接在 develop 開發(fā),如果開發(fā)工時 > 1d,那就需要創(chuàng)建分支,在分支上開發(fā)。

        開發(fā)后的提測上線流程 與 新需求加入的流程一致。

        修復(fù)測試環(huán)境 Bug

        develop 測試出現(xiàn)了Bug,如果修復(fù)工時 < 2h,直接在 develop 修復(fù),如果修復(fù)工時 > 2h,需要在分支上修復(fù)。

        修復(fù)后的提測上線流程 與 新需求加入的流程一致。

        修改預(yù)上線環(huán)境 Bug

        release 測試出現(xiàn)了Bug,首先要回歸下 develop 分支是否同樣存在這個問題。

        如果存在,修復(fù)流程 與 修復(fù)測試環(huán)境 Bug流程一致。

        如果不存在,這種可能性比較少,大部分是數(shù)據(jù)兼容問題,環(huán)境配置問題等。

        修改正式環(huán)境 Bug

        master 測試出現(xiàn)了Bug,首先要回歸下 releasedevelop 分支是否同樣存在這個問題。

        如果存在,修復(fù)流程 與 修復(fù)測試環(huán)境 Bug流程一致。

        如果不存在,這種可能性也比較少,大部分是數(shù)據(jù)兼容問題,環(huán)境配置問題等。

        緊急修復(fù)正式環(huán)境 Bug

        需求在測試環(huán)節(jié)未測試出 Bug,上線運行一段時候后出現(xiàn)了 Bug,需要緊急修復(fù)的。

        我個人理解緊急修復(fù)的意思是沒時間驗證測試環(huán)境了,但還是建議驗證下預(yù)上線環(huán)境。

        • 如果 release 分支存在未測試完畢的需求,就基于 master 創(chuàng)建 hotfix-xxx 分支,修復(fù)完畢后發(fā)布到 master 驗證,驗證完畢后,將 master 代碼合并到 releasedevelop 分支,同時刪掉 hotfix-xxx 分支。

        • 如果 release 分支不存在未測試完畢的需求,但 develop 分支存在未測試完畢的需求,就基于 release 創(chuàng)建 hotfix-xxx 分支,修復(fù)完畢后發(fā)布到 release 驗證,后面流程與上線流程一致,驗證完畢后,將 master 代碼合并到 develop 分支,同時刪掉 hotfix-xxx 分支。

        • 如果 releasedevelop 分支都不存在未測試完畢的需求, 就直接在 develop 分支上修復(fù)完畢后,發(fā)布到 release 驗證,后面流程與上線流程一致。

        并行提測

        在一個項目中并行開發(fā)了兩個需求,并行提測,但是上線日期不同。

        我能想到的兩種方案:

        • 再部署一套可供測試人員測試的分支
        • 使用 git cherry-pick “挑揀”提交

        對于并行提測,你有好的方案嗎?歡迎留言。

        Commit 日志規(guī)范

        提交信息一定要認(rèn)真填寫!

        建議參考規(guī)范:(scope):

        比如:fix(首頁模塊):修復(fù)彈窗 JS Bug。

        type 表示 動作類型,可分為:

        • fix:修復(fù) xxx Bug
        • feat:新增 xxx 功能
        • test:調(diào)試 xxx 功能
        • style:變更 xxx 代碼格式或注釋
        • docs:變更 xxx 文檔
        • refactor:重構(gòu) xxx 功能或方法

        scope 表示 影響范圍,可分為:模塊、類庫、方法等。

        subject 表示 簡短描述,最好不要超過 60 個字,如果有相關(guān) Bug 的 Jira 號,建議在描述中加上。

        小結(jié)

        暫時就想到這么多,規(guī)范這東西不是一成不變的,供參考。


        推薦閱讀:


        e7b040ad43b8da42817cb18774f0f67e.webp喜歡我可以給我設(shè)為星標(biāo)哦e7b040ad43b8da42817cb18774f0f67e.webp

        5c40f18854512b2cc27788d48280f001.webp

        好文章,我?在看?

        ce04505c5e6513bf3821021242eb074b.webp
        瀏覽 48
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 青草久久视频 | 三级无码电影在线观看 | 欧美毛片在线观看 | 国产199精品 | 亚洲阿v视频 |