1. 程式人生 > >我與Git的那些破事(下)--分支模型

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

在上篇文章中,我提到了Git的基本概念和一些本人實際專案中的總結。然而,最近讀了Vincent Driessen寫的一篇文章,覺得他總結的太好了,站在他肩膀上忍不住將自己的理解分享出來。Vincent Driessen的文章連線放在本文最下方,有需要的童鞋可去參考一二。

話不多上,乾貨頂上。

分支模型

上述這張圖便是一張完整的分支模型。乍看上去,似乎有點複雜,其實理解後非常簡單,並且十分經典。如果你所在專案程式碼管理較為混亂,我相信,該模型會對你有所幫助。

主要分支

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

  • master分支
  • develop分支

master:我相信,每個git使用者都非常熟悉該分支,沒錯,這是建立專案時的預設分支。對於該模型,我們認為master分支上任何一個點,都是一個穩定的版本,可以直接部署至產線環境。

develop:這是master的平行分支,也是專案中持續開發的分支。該分支的HEAD始終反應著下一個版本的最新修改。所有的feature分支程式碼都往這裡合入。通常,自動化測試環境都由該分支構建。

當develop分支合入了所有需求分支的程式碼(下個釋出版本所需的功能)並且穩定時,將develop程式碼合入到master分支,並打上版本tag(方便以後版本回溯)。

實際專案中,我們一般不直接從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/

本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文