前端開發(fā)-Gitflow簡(jiǎn)易版

Simple Gitflow

業(yè)務(wù)越來(lái)越復(fù)雜,分支也越來(lái)越多,為提高效率和規(guī)避流程錯(cuò)誤,商定一個(gè)統(tǒng)一的工作流程是至關(guān)重要的。

先上圖~

gitflow-simple.png

分支

Master

  • 它是一個(gè)長(zhǎng)期分支,存在于整個(gè)項(xiàng)目周期。

  • master分支上不允許任何代碼提交,只能由負(fù)責(zé)人進(jìn)行分支合并。

  • 該分支存放的應(yīng)該是隨時(shí)可供在生產(chǎn)環(huán)境中部署的代碼。

Feature

  • 臨時(shí)分支,用于開發(fā)新功能,不同業(yè)務(wù)可創(chuàng)建多個(gè)feature分支。
  • master分支創(chuàng)建,開發(fā)測(cè)試完成,合并至release分支后刪除。

Release

  • 臨時(shí)分支,用于預(yù)發(fā)布或回歸測(cè)試。
  • master分支創(chuàng)建,發(fā)布后打tag合并至master后刪除。
  • 命名建議:release/1.x.x

Hotfix

  • 臨時(shí)分支,用于修復(fù)線上問(wèn)題。
  • master分支創(chuàng)建,發(fā)布后打tag合并至master后刪除。
  • 命名建議:hotfix/bugName

為什么沒(méi)有develop分支?

develop分支的職責(zé)已經(jīng)分配到了featurehotfix分支,這樣臨時(shí)分支的修改也不用同步到兩個(gè)分支(develop和master),為避免混淆,所以移除了develop分支。

場(chǎng)景1:多個(gè)feature并行開發(fā)

假設(shè)5月收到需求,我們要做群密聊,計(jì)劃6月上線,并且在群密聊上線前,有個(gè)0528優(yōu)化版本要上。

好了,場(chǎng)景有了,來(lái)看看具體流程怎么操作。

  1. 創(chuàng)建feature分支

master分支分別創(chuàng)建feature/groupSChat、feature/me0528,命名最好貼合業(yè)務(wù)。

git checkout master
git branch feature/groupSChat
git branch feature/me0528

分支建好后,就進(jìn)入開發(fā)和測(cè)試階段;在經(jīng)歷N次提交和測(cè)試后準(zhǔn)備上線。

  1. 創(chuàng)建release分支

假設(shè)5月份版本是5.5.5 ,從master分支創(chuàng)建release/5.5.5分支,然后合并feature/me0528分支。

// 從master分支創(chuàng)建release/5.5.5分支并切換到該分支
git checkout master
git checkout -b release/5.5.5
git merge feature/me0528
git branch -d feature/me0528
  1. 打包上線-5.5.5版本

release/5.5.5分支進(jìn)行最終測(cè)試后上線,我們打上tag并合并到master,然后刪除release/5.5.5分支。

git checkout master
git merge release/5.5.5
git tag v5.5.5
git branch -d release/5.5.5

注意,到現(xiàn)在雖然5.5.5版本上線了,隔壁分支feature/groupSChat還在緊張開發(fā)中,但它絲毫沒(méi)有受到影響。

  1. 群密聊feature,在經(jīng)過(guò)N次提交和測(cè)試后,準(zhǔn)備上線

假設(shè)群密聊版本是6.0.0,master分支創(chuàng)建release/6.0.0分支,然后合并feature/groupSChat分支。

git checkout master
git checkout -b release/6.0.0
git merge feature/groupSChat
git branch -d feature/groupSChat
  1. 打包上線-6.0.0版本

release/6.0.0分支進(jìn)行最終測(cè)試后上線,我們打上tag并合并到master,然后刪除release/6.0.0分支。

git checkout master
git merge release/6.0.0
git tag v6.0.0
git branch -d release/6.0.0

到這里,我們并行開發(fā)的兩個(gè)feature都上線了;開發(fā)過(guò)程中我們創(chuàng)建的feature、release等分支,也隨發(fā)版后刪除了,倉(cāng)庫(kù)里只是多了兩個(gè)tag標(biāo)簽。

場(chǎng)景2:緊急修復(fù)線上bug

假設(shè)在場(chǎng)景1中,剛開始做feature/me0528和feature/groupSChat功能不久,就發(fā)現(xiàn)線上版本有嚴(yán)重問(wèn)題,領(lǐng)導(dǎo)要求馬上修復(fù)后上線。這時(shí)你可能會(huì)想,我已經(jīng)有兩個(gè)分支在開發(fā)了,該咋辦呢?別擔(dān)心,你還有master分支,它存放著可供在生產(chǎn)環(huán)境中部署的代碼。

  1. 創(chuàng)建hotfix分支

假設(shè)這個(gè)嚴(yán)重問(wèn)題是導(dǎo)致通訊錄用不了,contact not work ?

git checkout master
git branch hotfix/contactNotWork
  1. 打包上線-5.5.1版本
git checkout master
git merge hotfix/contactNotWork
git tag v5.5.1
git branch -d hotfix/contactNotWork
  • 首先,這里假設(shè)線上版本為5.5.0,bug修復(fù)后發(fā)版為5.5.1
  • 與feature分支不同的是,hotfix分支的代碼基于穩(wěn)定的功能,測(cè)試完畢后不需要通過(guò)release分支即可發(fā)布上線。

小結(jié)

  • 除了master分支,其它都是臨時(shí)分支,倉(cāng)庫(kù)中只有master分支和正在開發(fā)的feature分支,便于維護(hù)。
  • 臨時(shí)分支都是從master分支創(chuàng)建的。
  • feature分支通過(guò)測(cè)試后才創(chuàng)建并合并到release分支。
  • 通過(guò)創(chuàng)建release分支,能有效避免丟失已上線的功能或bug修復(fù)代碼。
  • 場(chǎng)景中分支合并示例使用的git merge,當(dāng)然你也可以用git rebase,關(guān)于二者的區(qū)別可參考文末鏈接。

Thanks

關(guān)于本文的由來(lái),首先要感謝 騏彰同學(xué)提供的思路,和現(xiàn)有團(tuán)隊(duì)的支持,才促使我整理了這篇文章,感謝。

最后編輯于
?著作權(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分支管理 master:主分支,當(dāng)前分支上的代碼隨時(shí)可以直接發(fā)布,并且只能通過(guò)Pull Request從其他...
    UEUEO閱讀 9,964評(píng)論 5 33
  • 原文推薦: A successful Git branching model 這個(gè)文章講的是Git分支模型的原理及...
    SonyaBaby閱讀 1,598評(píng)論 0 0
  • Git 倉(cāng)庫(kù)申請(qǐng)流程 1. 開發(fā)主管向Git 管理員提交Git 倉(cāng)庫(kù)申請(qǐng)【郵件:發(fā)送給Git 管理員,抄送給項(xiàng)目經(jīng)...
    騷包霸天虎閱讀 2,235評(píng)論 0 0
  • 忽然覺(jué)得有些事情并不如我想象的那樣發(fā)生,并沒(méi)有當(dāng)初我想的那么美好了。比如愛(ài)情,比如友情,比如親情。 我覺(jué)得,只要兩...
    繩命是入刺的井猜閱讀 151評(píng)論 0 0
  • 話說(shuō)已經(jīng)好久沒(méi)來(lái)九龍谷了,上次過(guò)來(lái)的時(shí)候,那是一個(gè)陰雨天,記憶深刻的是當(dāng)時(shí)暴雨傾盆,我和兒子快速的像豹子一樣,在深...
    丹尼爾李S閱讀 389評(píng)論 0 3

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