前端分支規(guī)范
開(kāi)發(fā)規(guī)模不大,結(jié)合比較正式的規(guī)范做了一些簡(jiǎn)化
基本概念
常設(shè)分支
master - 主分支,用于正式發(fā)布
develop - 開(kāi)發(fā)分支,用于創(chuàng)建新開(kāi)發(fā)feature分支
臨時(shí)分支
feature/*** - 任務(wù)開(kāi)發(fā)分支
release - 預(yù)發(fā)布分支
hotfix/*** - 線上熱修分支
這三種分支都屬于臨時(shí)性需要,使用完以后,應(yīng)該刪除,使得代碼庫(kù)的常設(shè)分支始終只有Master和Develop。
環(huán)境
正式環(huán)境:production
測(cè)試環(huán)境:testing
開(kāi)發(fā)環(huán)境:development
分支說(shuō)明
master(主分支)
master
為主分支,用于部署到正式環(huán)境production
,一般由release
或hotfix
分支合并,所有提供給用戶使用的正式版本,都在這個(gè)主分支上發(fā)布,任何情況下不允許直接在master
分支上修改代碼。
develop(開(kāi)發(fā))
develop
為開(kāi)發(fā)分支,始終保持最新完成以及 bug 修復(fù)后的代碼,可根據(jù)需求大小程度(工時(shí)是否小于一天)確定是由 feature 分支合并,還是直接在上面開(kāi)發(fā)。
持續(xù)集成、最新隔夜版本的生成等都是基于這個(gè)分支。
release(預(yù)上線分支、預(yù)發(fā)布分支)
release
為預(yù)上線分支,用于部署到測(cè)試環(huán)境testing
,發(fā)布正式版本之前(即合并到Master分支之前),我們可能需要有一個(gè)預(yù)發(fā)布的版本進(jìn)行測(cè)試。從master或develop拉取,測(cè)試完成merge回master和develop。
如果?存在?未測(cè)試完畢的需求,就基于master
創(chuàng)建。
如果?不存在?未測(cè)試完畢的需求,就基于develop
創(chuàng)建。
不建議直接在release
分支上直接修改代碼。
feature 分支
feature
為需求開(kāi)發(fā)分支,從develop拉取,開(kāi)發(fā)feature完成,merge回develop,一旦該需求上線,便將其刪除。
hotfix(線上熱修分支)
hotfix
?為緊急修復(fù)分支,從master拉取,修復(fù)并測(cè)試完成merge回master和develop,一旦修復(fù)上線,便將其刪除。
基本流程
每開(kāi)發(fā)一個(gè)新功能,創(chuàng)建一個(gè)
feature
分支,多人在此分支上開(kāi)發(fā);提測(cè)時(shí),將
master
分支和需要提測(cè)的分支匯總到一個(gè)release
分支,發(fā)布測(cè)試環(huán)境;發(fā)現(xiàn)bug時(shí),在
feature
分支上debug后,再次回到2;發(fā)布生產(chǎn)環(huán)境后,將
release
分支合并到master
分支,刪除release
分支。
命令行示例:
1 從develop分支創(chuàng)建feature分支git branch -b feature/branch-test develop2-1 從master或develop分支(具體條件看上文,這里選擇master)創(chuàng)建release分支git branch -b release master2-2 切換到release分支,把feature/branch-test分支合并到release分支git checkout release
git merge feature/branch-test4-1git checkout master
git merge release4-2 刪除feature和release分支(本地)git branch -d feature/branch-test
git branch -d release
刪除分支:
清除本地remotegit remote prune origin刪除本地分支(-D為強(qiáng)制刪除)git branch -d|-D ?[branchName]刪除遠(yuǎn)程分支git push origin --delete [branchName]
其他場(chǎng)景
發(fā)布測(cè)試環(huán)境(release分支)
確認(rèn)要發(fā)布的feature 分支上的功能是否開(kāi)發(fā)完畢并提交;
創(chuàng)建release 分支(發(fā)布分支),將所有要發(fā)布的分支逐個(gè)合并到release分支,有如下情況:
feature分支(可能有多個(gè))
master分支(期間可能有其他release版本更新到了master)
命名規(guī)則(可選):release-分支創(chuàng)建日期-新特性和待發(fā)布版本號(hào)
發(fā)布到測(cè)試環(huán)境,通知測(cè)試;
測(cè)試完成后刪除本次發(fā)布的所有feature分支。
修復(fù)待發(fā)布版本中的Bug(feature分支)
如果發(fā)現(xiàn)bug,開(kāi)發(fā)人員在 feature 分支上修復(fù)測(cè)試人員提交給自己的bug,修復(fù)完成后,合并到 release 分支,發(fā)布測(cè)試環(huán)境。
發(fā)布正式環(huán)境
根據(jù)修復(fù)后的release分支再次將master合并,打包發(fā)布生產(chǎn)環(huán)境;
確認(rèn)發(fā)布成功,并線上驗(yàn)收通過(guò)后,將release分支合并到master分支;
在master分支上創(chuàng)建標(biāo)簽(可選),命名規(guī)則:tag-日期-新特性和版本號(hào),版本可根據(jù)需要添加,作為發(fā)版里程碑標(biāo)記;
刪除對(duì)應(yīng)release 分支。
修復(fù)線上Bug(hotfix分支)
從master 分支某個(gè)tag 上創(chuàng)建一個(gè) hotfix 分支(熱修復(fù)分支),一般是最新的tag應(yīng)該和當(dāng)前生產(chǎn)環(huán)境對(duì)應(yīng);
開(kāi)發(fā)人員完成Bug 修復(fù),提交hotfix分支到測(cè)試環(huán)境驗(yàn)收通過(guò);
再次發(fā)布正式環(huán)境流程;
將 hotfix 分支合并到 master 分支;
在master分支上創(chuàng)建標(biāo)簽(可選),命名規(guī)則:tag-日期-新特性和版本號(hào),版本可根據(jù)需要添加,作為發(fā)版里程碑標(biāo)記;
刪除 hotfix 分支。