移動(dòng)端git管理規(guī)范

一、GitFlow

Git的分支管理規(guī)范我們參考GitFlow, GitFlow是由荷蘭程序員Vincent Driessen提出的Git管理規(guī)范(A successful Git branching model)。

二、GitFlow 常用分支

master

? 主分支 , 產(chǎn)品的功能全部實(shí)現(xiàn)后 , 最終在 master 分支對(duì)外發(fā)布
? 該分支為只讀唯一分支 , 只能從其他分支(release/hotfix)合并 , 不能在此分支修改
? 所有在 master 分支的推送應(yīng)該打標(biāo)簽做記錄,方便追溯
? 例如 release 合并到 master , 或 hotfix 合并到 master

develop

? 主開發(fā)分支 , 基于 master 分支克隆
? 該分支為只讀唯一分支 , 只能從其他分支合并
? feature 功能分支完成 , 合并到 develop
? 從 develop 創(chuàng)建 release 分支提測(cè)
? release/hotfix 分支上線完畢 , 合并到 develop 并推送

feature

? 功能開發(fā)分支 , 基于 develop 分支克隆 , 主要用于新需求新功能的開發(fā),屬于臨時(shí)分支
? feature 分支可同時(shí)存在多個(gè) , 用于團(tuán)隊(duì)中多個(gè)功能同時(shí)開發(fā)
? 功能開發(fā)完畢并測(cè)試完成后合到 develop 分支。合并后此分支刪除(誰(shuí)合并誰(shuí)刪除)

release

? 從 develop 分支克隆,屬于臨時(shí)分支
? 用于提交給測(cè)試人員進(jìn)行功能測(cè)試 , 測(cè)試過(guò)程中發(fā)現(xiàn)的 BUG 在本分支進(jìn)行修復(fù) , 修復(fù)完成上線后合并
? 合并到 develop/master 分支并推送(完成功能) , 打 Tag
? 合并完成后此分支刪除(誰(shuí)合并誰(shuí)刪除)

hotfix

? Bugfix 補(bǔ)丁分支 , 基于 master 分支克隆 , 主要用于對(duì)線上的版本進(jìn)行 BUG 修復(fù),屬于臨時(shí)分支
? 修復(fù)完畢后合并到 master 分支并推送 , 打 Tag
【注意】如不對(duì) bug 進(jìn)行臨時(shí)發(fā)版,不需要合并到 master 分支
? 合并到 develop 分支并推送
? 合并到 develop/master 后,此分支刪除(誰(shuí)合并誰(shuí)刪除)

三、主要工作流程

GitFlow 的工作主要工作流程如下


image.png

四、code review

code review 有條件的,可以采用Gerrit 、phabricator 等三方工具,他們會(huì)有一個(gè)中心倉(cāng)庫(kù),方便code review,沒(méi)條件的可以用gitlab自帶的Merger request,在合并至develop時(shí)進(jìn)行 code review

Commit Message規(guī)范

目前 AngularJS 在github上的提交規(guī)范是被業(yè)內(nèi)很多人認(rèn)可的,也被大家逐漸引用。同時(shí)針對(duì)這種提交格式也有成熟的工具,來(lái)根據(jù)commit的message記錄自動(dòng)生成Change Log內(nèi)容。所以我們也采用同樣的規(guī)范來(lái)進(jìn)行約束。

AngularJS Git Commit Message規(guī)范 - Google Doc文檔需翻墻。

  1. 格式:Commit Message包括三部分內(nèi)容: header,body和footer。其中header是必須的,body和footer可以省略。
 <type>(<scope>): <subject>
 <BLANK LINE>
 <body>
 <BLANK LINE>
 <footer>
  1. header: header部分只有一行,包括三個(gè)字段type(必需)、scope(可選)和subject(必需)。
    *   type:用于說(shuō)明commit的類別。
        *   feat: 新功能(feature)
        *   fix:修復(fù)bug
        *   update: 普通的內(nèi)容修改
        *   docs:文檔
        *   style:格式(不影響代碼運(yùn)行的變動(dòng))
        *   refactor:重構(gòu)(即不是新增功能,也不是修改bug的代碼變動(dòng))
        *   test:增加測(cè)試
        *   chore:構(gòu)建過(guò)程或輔助工具
        *   scope:用于說(shuō)明commit影響的范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項(xiàng)目不同而不同。
        *   subject:commit目的的簡(jiǎn)短描述。
# 新功能
feat: 輕應(yīng)用離線包管理
# 修復(fù)bug
fix: 修復(fù)下載的xmind類型文件,預(yù)覽識(shí)別類型不正確的問(wèn)題
# 文檔更新
docs: 輕應(yīng)用離線功能的文檔更新
# 重構(gòu)
refactor: 優(yōu)化下載預(yù)覽
# 增加測(cè)試
test``: 下載邏輯增加單元測(cè)試
# 自動(dòng)化、腳本等
chore: 修改sonar掃描的配置信息
 ```
  1. body:對(duì)本次commit的詳細(xì)描述,可以分成多行。

    More detailed explanatory text, if necessary. Wrap it to
    about 72 characters or so.
    Further paragraphs come after blank lines.

    - Bullet points are okay, too
    - Use a hanging indent
  1. footer:只用于以下兩種情況

    • 如果當(dāng)前代碼與上一個(gè)版本不兼容,則footer部分以BREAKING CHANGE開頭,后面是對(duì)變動(dòng)的描述,以及變動(dòng)理由和遷移方法。
      BREAKING CHANGE: isolate scope bindings definition has changed.
      To migrate the code follow the example below:

      Before:
      scope: {
               myAttr: attribute,
      }
      After:
      scope: {
      myAttr: @,
      }
      
      

    關(guān)閉Issue,如果當(dāng)前commit是針對(duì)某個(gè)issue,那么可以在footer部分關(guān)閉這個(gè)issue。

     Closes #234 #445 #8888
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git 規(guī)范 所有使用了本規(guī)范的項(xiàng)目,必須嚴(yán)格規(guī)范操作,否則不予以合并代碼、提測(cè)、打包上線等后續(xù)操作。 基本要求 ...
    zgsddzwj閱讀 14,298評(píng)論 1 14
  • 分支說(shuō)明和對(duì)應(yīng)的操作 master分支 Git主分支的名字,默認(rèn)叫做master。它是自動(dòng)建立的,版本庫(kù)初始化以后...
    米_8d62閱讀 2,158評(píng)論 0 1
  • [TOC] Git 內(nèi)部實(shí)現(xiàn)原理剖析[http://m.itdecent.cn/p/8154ac47d406...
    Whyn閱讀 1,008評(píng)論 0 0
  • Git是一個(gè)十分優(yōu)秀的版本控制工具,但僅僅依靠版本控制工具,還不能保證在多人協(xié)作的情況讓項(xiàng)目的版本流轉(zhuǎn)有條不紊,版...
    科研者閱讀 2,662評(píng)論 0 7
  • 1 GIT,在技術(shù)層面上,絕對(duì)是一個(gè)無(wú)中心的分布式版本控制系統(tǒng),但在管理層面上,我建議你保持一個(gè)中心版本庫(kù)。 2 ...
    聶順閱讀 881評(píng)論 0 1

友情鏈接更多精彩內(nèi)容