git分支管理規(guī)范

Git 倉庫申請流程

1. 開發(fā)主管向Git 管理員提交Git 倉庫申請【郵件:發(fā)送給Git 管理員,抄送給項(xiàng)目經(jīng)理,申請表可向Git

管理員獲取】

2. Git 管理員審批開發(fā)主管的申請,審批以下具體信息:

a) 審批郵件是否抄送給項(xiàng)目經(jīng)理

b) 申請的Git 倉庫名稱是否符合命名規(guī)范

3. 若審批通過,則Git 管理員完成以下任務(wù):

a) 創(chuàng)建Git 倉庫

b) 設(shè)置開發(fā)主管為Git 倉庫的Master 角色(管理員,具有該Git 倉庫的管理權(quán)限)

c) 將Git 倉庫地址告知開發(fā)主管【郵件:發(fā)送給開發(fā)主管,抄送給項(xiàng)目經(jīng)理】

4. 若審批不通過,則駁回申請【郵件:發(fā)送給開發(fā)主管,抄送給項(xiàng)目經(jīng)理】

初始化Git 倉庫

第一步:克隆遠(yuǎn)程倉庫

開發(fā)主管從Gitlab 中克隆遠(yuǎn)程倉庫

命令示例:

git clone <倉庫地址>

第二步:提交并推送初始版本

開發(fā)主管提交代碼初始版本到master 分支,并推送至Gitlab 系統(tǒng)

master

開發(fā)主管在Gitlab 系統(tǒng)中設(shè)置master 分支為Protectd 分支(保護(hù)分支)

Protected 分支不允許Developer 推送代碼,但Master 可以推送代碼

命令示例:

提交本地修改:

git add .

git commit –m “提交日志”

推送master 分支:

git push origin master

第三步:創(chuàng)建開發(fā)分支

開發(fā)主管在master 分支上創(chuàng)建develop 分支(開發(fā)分支),并推送至Gitlab 系統(tǒng)

master

develop

master 分支與develop 分支一樣,有且僅有一個

命令示例:

從master 分支上創(chuàng)建develop 分支:

git checkout –b develop master

推送develop 分支:

git push origin develop

開發(fā)新功能

開發(fā)人員在develop 分支上實(shí)現(xiàn)新功能,包括:新特性與Bug 修復(fù)

master

develop

Feature + Bugfix

命令示例:

切換到develop 分支:

git checkout develop

提交本地修改:

git add .

git commit –m “提交日志”

推送develop 分支:

git push origin develop

若存在多個新特性可以并行開發(fā),則開發(fā)主管可創(chuàng)建一個或多個feature 分支(特性分支),命名規(guī)范:

feature-分支創(chuàng)建日期-新特性關(guān)鍵字,例如:feature-20150508-i18n

develop

feature

當(dāng)新特性開發(fā)完畢后,開發(fā)主管需將feature 分支合并到develop 分支,最后需刪除feature 分支

命令示例:

從develop 分支上創(chuàng)建feature 分支:

git checkout –b feature-20150508-i18n develop

合并feature 分支到develop 分支:

git checkout develop

git merge --no-ff feature

刪除本地feature 分支:

git branch –d feature-20150508-i18n

刪除遠(yuǎn)程feature 分支:

git push origin :feature-20150508-i18n

什么時候需考慮使用feature 分支?

  1. 開發(fā)一個獨(dú)立的新特性(完成時,需合并到develop 分支)

  2. 技術(shù)研究與嘗試(若失敗,可隨時刪除feature 分支)

  3. 提前實(shí)現(xiàn)下一個版本需要開發(fā)的特性(可不在本次迭代中發(fā)布)

推薦使用feature 分支,但feature 分支的生命周期不能跨一次迭代

準(zhǔn)備發(fā)布新版本

開發(fā)主管需完成以下任務(wù):

  1. 確認(rèn)develop 分支上的功能是否開發(fā)完畢

  2. 若開發(fā)完畢,則創(chuàng)建release 分支(發(fā)布分支),命名規(guī)則:release-分支創(chuàng)建日期-待發(fā)布版本號,例

如:release-20150508-v1.0.0

  1. 首先在release 分支中升級Maven 版本號,例如:1.0.0-SNAPSHOT,然后修改version.ini 文件(便于在

部署時查看當(dāng)前版本號),最后在release 分支上做一次提交

  1. 通知測試主管可對release 分支進(jìn)行測試【郵件:發(fā)送給測試經(jīng)理,抄送給項(xiàng)目經(jīng)理與團(tuán)隊(duì)成員】

master

develop

Feature + Bugfix

release

命令示例:

從develop 分支上創(chuàng)建release 分支:

git checkout –b release-20150508-v1.0.0 develop

修復(fù)待發(fā)布版本中的Bug

開發(fā)人員在release 分支上修復(fù)測試人員提交給自己的Bug

master

develop

Feature + Bugfix

release

Bugfix

只允許在release 分支上修復(fù)Bug,不允許提交任何新特性,開發(fā)主管需全程監(jiān)管

命令示例:

切換到release 分支:

git checkout release-20150508-v1.0.0

提交本地修改:

git add .

git commit –m “提交日志”

推送release 分支:

git push origin release-20150508-v1.0.0

發(fā)布新版本

第一步:集成測試

測試主管需完成以下任務(wù):

  1. 從release 分支上檢出所有代碼并搭建集成測試環(huán)境

  2. 安排測試人員,對release 分支進(jìn)行集成測試

  3. 通知開發(fā)主管當(dāng)前版本已集成測試完畢【郵件:發(fā)送給開發(fā)主管,抄送給項(xiàng)目經(jīng)理】

第二步:冒煙測試

開發(fā)主管需完成以下任務(wù):

  1. 將release 分支同時合并到master 分支與develop 分支

  2. 郵件通知測試主管,對master 分支進(jìn)行冒煙測試

第三步:發(fā)布新版本

開發(fā)主管需完成以下任務(wù):

  1. 修改master 分支上的Maven 快照版為發(fā)布版(去掉SNAPSHOT 后綴)

  2. 添加發(fā)布日志(RELEASE.md)

  3. 在master 分支上創(chuàng)建標(biāo)簽,命名規(guī)則:tag-日期-版本,例如:tag-20150508-v1.0.0

  4. 刪除release 分支

  5. 打包并上傳Maven 私服

  6. 通知測試主管新版本已發(fā)布完畢【郵件:發(fā)送給測試主管,抄送給項(xiàng)目經(jīng)理與Git 管理員,郵件格式

請找Git 管理員獲取】

master

develop

Feature + Bugfix

release

Bugfix

1.0.0

命令示例:

合并release 分支到master 分支:

git checkout master

git merge --no-ff release-20150508-v1.0.0

合并release 分支到develop 分支:

git checkout develop

git merge --no-ff release-20150508-v1.0.0

在master 分支上創(chuàng)建標(biāo)簽:

git tag tag-20150508-v1.0.0

刪除本地release 分支:

`git branch –d release-20150508-v1.0.0

刪除遠(yuǎn)程release 分支:

git push origin :release-20150508-v1.0.0

修復(fù)線上Bug

第一步:創(chuàng)建hotfix 分支

開發(fā)主管需完成以下任務(wù):

  1. 從master 分支某個tag 上創(chuàng)建一個hotfix 分支(熱修復(fù)分支),命名規(guī)則:hotfix-分支創(chuàng)建日期-待

發(fā)布版本號,例如:hotfix-20150508-v1.0.1

  1. 首先在hotfix 分支中升級Maven 版本號(例如:1.0.1-SNAPSHOT),然后修改version.ini 文件,最后在

hotfix 分支上做一次提交

  1. 指導(dǎo)開發(fā)人員完成Bug 修復(fù)

  2. 通知測試主管對hotfix 分支進(jìn)行測試【郵件:發(fā)送給測試主管,抄送給項(xiàng)目經(jīng)理】

master

hotfix

1.0.0

命令示例:

從某個標(biāo)簽上創(chuàng)建hotfix 分支:

git branch hotfix-20150508-v1.0.1 tag-20150508-v1.0.0

第二步:驗(yàn)證Bug 是否已修復(fù)

測試主管需完成以下任務(wù):

  1. 驗(yàn)證Bug 是否已修復(fù)

  2. 通知開發(fā)主管Bug 已修復(fù)【郵件:發(fā)送給開發(fā)主管,抄送給項(xiàng)目經(jīng)理】

第三步:創(chuàng)建標(biāo)簽并發(fā)布新版本

開發(fā)主管需完成以下任務(wù):

  1. 將hotfix 分支同時合并到master 與develop 分支

  2. 通過測試主管進(jìn)行冒煙測試

第四步:發(fā)布新版本

開發(fā)主管需完成以下任務(wù):

  1. 修改master 分支上的Maven 快照版為發(fā)布版(去掉SNAPSHOT 后綴)

  2. 添加發(fā)布日志(RELEASE.md)

  3. 在master 分支上創(chuàng)建標(biāo)簽

  4. 刪除hotfix 分支

  5. 打包并上傳Maven 私服

  6. 通知測試主管新版本已發(fā)布完畢【郵件:發(fā)送給測試主管,抄送給項(xiàng)目經(jīng)理與Git 管理員,郵件格式

請找Git 管理員獲取】

master

develop

hotfix

1.0.0 1.0.1

Bugfix

命令示例:

合并hotfix 分支到master 分支:

git checkout master

git merge --no-ff hotfix-20150508-v1.0.1

合并hotfix 分支到develop 分支:

git checkout develop

git merge --no-ff hotfix-20150508-v1.0.1

在master 分支上創(chuàng)建標(biāo)簽:

git checkout master

git tag tag-20150508-v1.0.1

刪除本地hotfix 分支:

git branch –d hotfix-20150508-v1.0.1

刪除遠(yuǎn)程hotfix 分支:

git push origin :hotfix-20150508-v1.0.1

若無法將hotfix 分支合并到master 與develop 分支時,應(yīng)該如何發(fā)布?

比如:現(xiàn)在master 分支已經(jīng)發(fā)布了2.0.0 版本(代碼結(jié)構(gòu)發(fā)生了很大的變化),但線上發(fā)現(xiàn)了一個1.0.0 版

本的Bug,當(dāng)修改了Bug 后,是無法再合并到master 與develop 分支的,開發(fā)主管需完成以下任務(wù):

  1. 直接在hotfix 分支上創(chuàng)建標(biāo)簽

  2. 刪除hotfix 分支(分支刪除了,只要標(biāo)簽還在,版本就可以找得回來)

  3. 手工修改develop 分支中的代碼(在后續(xù)發(fā)布時再合并到master 分支中)

定制化項(xiàng)目

當(dāng)需要對某項(xiàng)目進(jìn)行定制化時,可從源項(xiàng)目的Git 倉庫fork 出一個新的Git 倉庫:

repo1 fork repo2

當(dāng)fork 后,對repo1 做出的任何修改,都不會影響到repo2

在repo2 中修復(fù)了Bug,可通過Merge Request 的方式提交給repo1

在repo2 中可隨時拉取repo1 中的提交,但repo1 不能拉取repo2 中的提交

附錄

Maven 版本號命名規(guī)范

格式:Major.Minor.Micro

Major 版本 架構(gòu)調(diào)整

Minor 版本 新特性

Micro 版本 Bug 修復(fù)、優(yōu)化

Git 分支類型

分支 用途

master 分支(主分支) 穩(wěn)定版本

develop 分支(開發(fā)分支) 最新版本

release 分支(發(fā)布分支) 發(fā)布新版本

hotfix 分支(熱修復(fù)分支) 修復(fù)線上Bug

feature 分支(特性分支) 實(shí)現(xiàn)新特性

master

develop

Feature + Bugfix

release

Bugfix

hotfix

1.0.0 1.0.1

Bugfix

Gitlab 角色與項(xiàng)目角色對應(yīng)關(guān)系

Gitlab 角色 項(xiàng)目角色

Owner(擁有者) Git 管理員

Master(管理員) 開發(fā)主管

Developer(開發(fā)者) 開發(fā)人員

Reporter(報告者) 測試人員

Guest(觀察者) 其他人員

Git 管理員與開發(fā)主管的職責(zé)

Git 管理員 開發(fā)主管

  1. 創(chuàng)建Git 倉庫

  2. 檢查Git 分支規(guī)范

  3. 維護(hù)Gitlab 系統(tǒng)

  4. 管理項(xiàng)目成員

  5. 管理分支

  6. 管理標(biāo)簽

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

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

  • # 分支管理 Edit ## 分支分類及作用 Edit 一共5類分支,分別為master,dev,feature,...
    聶順閱讀 1,329評論 0 0
  • 1 GIT,在技術(shù)層面上,絕對是一個無中心的分布式版本控制系統(tǒng),但在管理層面上,我建議你保持一個中心版本庫。 2 ...
    聶順閱讀 876評論 0 1
  • 1 Git Flow介紹 我們都知道, 在 git 的分支功能相對 svn 確實(shí)方便許多,而且也非常推薦使用分支來...
    七寸知架構(gòu)閱讀 8,047評論 20 68
  • 今天在阿里外貿(mào)圈看到一篇文章,作者是美資進(jìn)口商小采購??戳宋恼逻€是很有感觸的,這些道理,在這大半年工作中都有所悟,...
    阿顏1798閱讀 256評論 0 0
  • 小有成就感,今天團(tuán)隊(duì)完成第一個站點(diǎn)的安裝,先發(fā)張圖紀(jì)念一下。 娟兒,我是不是變吊絲了。我右邊是導(dǎo)師,另外幾個是組員...
    小王007閱讀 139評論 4 0

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