Git代碼版本控制流程

來源:https://www.cnblogs.com/fangsmile/p/11535302.htmlhtml

咱們的項目使用Git做爲代碼倉庫、和版本控制工具。
程序員

Git有幾種Workflow,來管理代碼版本變動流程,咱們採用Gitflow Workflow流程。面試

 

 

Gitflow Workflow,採用了master、develop、release、feature、hotfix等幾個分支。master、develop分支的生命週期是永久的,release、feature、hotfix分支都是輔助分支,其生命週期是短暫的。微信

各個分支的做用及意義,見下。 架構

master分支

master分支用於保存官方發佈歷史,與線上的版本一致。要確保任什麼時候候從master分支均可以拿處處於可發佈狀態的代碼。app

一個工程只有一個master分支,建立Git工程後自動建立,生命週期爲永久。編輯器

跟master分支打交道的分支有release分支、hotfix分支:微服務

  • 測試經過後,「配置管理員」(如下簡稱爲「配管」)將release分支合併到master分支。工具

  • 線上緊急修復後,「配管」將hotfix分支合併回master分支。測試

release分支合併到master分支後,須要在master分支上打Tag(記錄里程碑),標記官方發佈的版本號。

版本號的命名規則

命名規則:vx.y.z

  • x:大版本號,有重大功能發佈時升位。

  • y:中版本號,增長新功能或功能優化改進時升位。

  • z:小版本號,有hotfix時升位。

 

「配管」負責在master分支上打Tag。

 

develop分支

develop是開發集成的分支,全部開發完成的代碼提交到此分支。功能累積到必定程度或者週期性發佈須要提測時,今後分支遷出代碼到release分支,進行測試。要確保任什麼時候候均可以從develop分支拿到最新開發進展的代碼。

一個工程只有一個develop分支,最初由「配管」建立,生命週期爲永久。

跟develop分支打交道的分支有release分支、hotfix分支、feature分支:

  • 「開發主管」提測時,「配管」從develop分支遷出代碼到release分支。

  • release分支測試經過後,「配管」將release分支合併回develop分支。

  • 線上緊急修復後,「配管」將hotfix分支合併到develop分支。

  • 功能開發完成後,「開發主管」(須要多人協做開發的feature)或各個開發(獨立開發的feature)將feature分支合併到develop分支。

 

release分支

release是測試分支,用於測試某個待發布的版本。從develop分支遷出代碼到release分支,凍結代碼(除了修改bug),進行測試。測試經過後合併到master分支,正式發佈。

release分支使得待發布版本的測試與新版本的開發活動能夠並行,互不干擾。

一個工程有多個release分支,一個待測試的、準備發佈的版本一個分支。release分支的生命週期不是永久的,最初起源於develop分支,最終歸於master和develop分支。提測時,「配管」建立一個release分支;測試經過、合併到master分支及develop分支後,「配管」刪除該分支。

跟release分支打交道的分支有develop分支、master分支:

  • 「開發主管」提測時,「配管」從develop分支遷出代碼、建立一個release分支。

  • release分支測試經過後,「配管」將release分支合併到master分支,同時合併回develop分支。

release分支的命名規則

命名規則:release_x.y.z

x、y、z的意義,同master的Tag。由於release分支通常用於發佈新功能或功能優化改進,因此x、y會有升位,z取0。

測試、開發修改bug,都是在release分支上進行。在此期間,應嚴禁新功能的代碼併入release分支,應合併到develop分支。

 

feature分支

feature分支是各個功能的開發分支,開發完成後合併到develop分支。

feature分支使得多我的能夠並行開發,互不干擾。

一個工程有多個feature分支,一個feature一個分支。feature分支的生命週期不是永久的,最初起源於develop分支,最終也歸於develop分支。開始開發一個新功能時,由「開發主管」或開發本身建立一個feature分支;功能開發完成、合併到develop分支後,「開發主管」或開發本身刪除該分支。

跟feature分支打交道的分支只有develop分支:

  • 對於須要多人協做開發的feature:「開發主管」從develop分支遷出代碼、建立一個feature分支,而後通知給須要協做的各個開發;各個開發在此分支上提交代碼。各個開發的代碼都提交後,「開發主管」將該feature分支合併到develop分支,而後刪除該分支。

  • 對於不需協做、開發可獨立完成的feature:能夠由開發本身從develop分支遷出代碼、建立一個feature分支;開發完成後,開發本身將該feature分支合併到develop分支,而後刪除該分支。

feature分支的命名規則

命名規則:feature_xxx

xxx爲功能的名稱,如notification(通知)、circle(圈子)等。

hotfix分支

hotfix分支用於緊急修復線上的bug。

hotfix分支使得線上bug的緊急修復,與待發布版本的測試、以及新版本的開發活動能夠並行,互不干擾。

一個工程有多個hotfix分支,一次hotfix建立一個分支。hotfix分支的生命週期不是永久的,最初起源於master分支,最終歸於master和develop分支。提出hotfix時,「配管」建立一個hotfix分支;bug修改完成、合併回master分支以及develop分支後,「配管」刪除該分支。

跟hotfix分支打交道的分支有master分支、develop分支:

  • 須要緊急修復線上bug時,「配管」從master分支的某個Tag(通常是最新的)遷出代碼、建立一個hotfix分支。

  • bug修改完成、測試經過後,「配管」將該hotfix分支合併回master分支,同時合併到develop分支。 

hotfix分支的命名規則

命名規則:hotfix_yyyymmmdd

yyyymmdd爲提出hotfix的日期,通常狀況下hotfix的bug必須當天修復、發佈。

 hotfix分支合併回master分支後,須要在master分支上打一個Tag,標記當前版本,小版本號升位。

 

 具體到一個工程中,各個階段的具體流程爲:

項目啓動

 

準備開發環境

 

 

測試流程

 發佈流程:

 

 

hotfix流程:

 

做者簡介猿芯,一枚簡單的北漂程序員。喜歡用簡單的文字記錄工做與生活中的點點滴滴,願與你一塊兒分享程序員靈魂深處真正的心裏獨白。個人微信號:WooolaDunzung,公衆號【猿芯輸入 1024 ,有份面試驚喜送給你哦

< END >

【猿芯】
 微信掃描二維碼,關注個人公衆號。

喜歡就點個"在看"唄^_^

本文分享自微信公衆號 - 架構薈萃(dwooola)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索