我與Git的那些破事(下)--分支模型

在上篇文章中,我提到了Git的基本概念和一些本人實際項目中的總結。然而,最近讀了Vincent Driessen寫的一篇文章,以爲他總結的太好了,站在他肩膀上忍不住將本身的理解分享出來。Vincent Driessen的文章鏈接放在本文最下方,有須要的童鞋可去參考一二。git

話很少上,乾貨頂上。post

分支模型

上述這張圖即是一張完整的分支模型。乍看上去,彷佛有點複雜,其實理解後很是簡單,而且十分經典。若是你所在項目代碼管理較爲混亂,我相信,該模型會對你有所幫助。測試

主要分支

對於完整的項目來說,有兩個主要分支,它們的生命週期與項目等同,即一直會存在:spa

  • master分支
  • develop分支

master:我相信,每一個git用戶都很是熟悉該分支,沒錯,這是建立項目時的默認分支。對於該模型,咱們認爲master分支上任何一個點,都是一個穩定的版本,能夠直接部署至產線環境。3d

develop:這是master的平行分支,也是項目中持續開發的分支。該分支的HEAD始終反應着下一個版本的最新修改。全部的feature分支代碼都往這裏合入。一般,自動化測試環境都由該分支構建。code

當develop分支合入了全部需求分支的代碼(下個發佈版本所需的功能)而且穩定時,將develop代碼合入到master分支,並打上版本tag(方便之後版本回溯)。blog

實際項目中,咱們通常不直接從develop分支將代碼合入至master分支,而是從develop拉出release分支,從release分支合入master分支。詳情往下觀看。生命週期

次要分支

除了master和develop分支,開發模型中還須要其餘分支來協同開發,其生命週期各不相同,但最終都會被刪除。事件

  • feature分支
  • release分支
  • hotfix分支

feature分支

當開發團隊接到一個新的需求,從develop分支拉出一個feature分支,該功能相關代碼均在該分支開發。圖片

當該分支開發完畢,將分支代碼合入develop分支;

遠端刪除該feature分支,固然開發本地可保留該分支一段時間,防止出現烏龍事件。

本地建立一個feature分支:

#從本地develop分支拉出feature1分支
git checkout -b feature1 develop
#從遠端develop分支拉出feature1分支
git checkout -b feature1 origin/develop

將本地分支上傳到遠端:

#將本地新建feature1分支上傳到遠端,並在遠端命名爲feature1
git push origin feature1:feature1
#將本地新建feature1分支上傳到遠端,並在遠端命名爲feature2
git push origin feature1:feature2  

查詢分支

#查詢本地分支
git branch
#查詢遠端分支
git branch -r
#查詢全部分支
git branch -a

本地切換分支

#切換到develop分支
git checkout develop

本地刪除分支

#刪除本地分支feature1
git branch -d feature1
#強制刪除本地分支feature1
git branch -D feature1
#刪除遠程分支feature1
git push origin :feature1 

release分支 

當develop分支達到一個穩定點,從develop分支從拉出release分支,將其打包並部署到環境中,進行系統測試。

若是測試過程當中,出現bug,在release分支進行bug修復,而後出包再次測試;

該bug確認修復後,將代碼合入develop分支;

全部測試經過後,將代碼合入master分支,並在master分支打tag(通常對應版本號)。

本地分支打tag

#切換master分支
git checkout master
#本地分支打tag
git tag -a 2.0.0 -m 'comments'
#本地tag上傳至遠端
git push --tags

本地刪除tag

#本地刪除tag 2.0.0
git tag -d 2.0.0
#刪除遠端tag 2.0.0
git push origin :refs/tags/2.0.0

當發佈完成後,咱們能夠將遠端的release分支刪除,固然能夠保留本地release分支一段時間,防止烏龍事件。

hotfix分支

當已發佈的版本,在運行一段時間後,因爲偶然等因素形成bug,需緊急修復,此時從master分支拉出hotfix分支進行bug修復。

當bug修復完成後,將代碼分別合入develop分支和master分支。

合入master分支後,在master打上新的tag(通常是小版本號)。

新版本上線後,遠端hotfix分支能夠刪除,本地hotfix分支能夠保留一段時間,防止烏龍事件。

 

上述內容看完,再回過頭來看最初的分支模型,是否以爲so easy呢~

再次感謝vincent Driessen,本文多處圖片均是參考該篇blog而繪製:A successful Git branching model


做者:吳家二少

博客地址:https://www.cnblogs.com/cloudman-open/

本文歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接

相關文章
相關標籤/搜索