在工做中使用Git已有5年多的時間了,Git分佈式的工做機制以及強大的分支功能使得在團隊中推廣使用沒有受到什麼阻礙。一直以來都是採用的分支管理模式,我把項目的開發分爲三個階段:開發、測試和上線。centos
開發人員在dev分支上進行工做,隨時隨地commit,天天push一次到服務器;服務器
push代碼前須要進行pull操做,由於有可能在以前有別的成員先進行了push操做,若是有衝突還須要進行衝突解決;分佈式
天天上班後全部成員對dev進行pull操做,獲取全部成員push的代碼,有衝突須要解決;工具
團隊Leader天天將dev合併一次到master。測試
測試進入後就須要添加test分支;優化
在開發人員將代碼push到dev分支後,能夠在dev基礎上建立test分支,測試人員以test分支搭建測試環境,開始測試;spa
開發人員在接受到bug後,直接在測試分支上修改,而後讓測試人員進行驗證;3d
天天團隊Leader將測試分支上修改的bug合併到dev分支上,這樣全部團隊成員當天修復的bug都會在次日被團隊其餘人pull下來;blog
團隊Leader天天將dev合併一次到master。開發
系統上線後試運行階段會存在兩種改動:bug和優化需求,bug一般當天解決晚上部署,優化需求一般週末部署;
bug當天能修復的就直接在test分支上修復,而後進行測試,驗證經過後合併到master;
bug當天不能修復的就針對該bug建立一個分支,修復完後合併到test分支進行測試,驗證經過後合併到master;
每一個優化需求都以master分支爲基礎建立一個feature分支,完成後合併到dev分支,開發人員能夠先交叉測試,而後將dev合併到test進行測試,驗證經過後合併到master;
master始終是一個乾淨的,可發佈的分支。
一直以來,都以爲Merge Request模式高不可攀,只有作開源軟件纔會採用這種模式,沒想到這麼快就已經在團隊中開始推行使用了,先看一張圖來了解下Merge Request的開發流程:
雖然Issue不支持多層級,但結合里程碑、標籤等仍是能夠很好的對任務和Bug進行管理;
管理員和團隊成員均可以進行Issue的建立;
任務的接收者對Issue建立Merge Request;
完成任務後推送代碼到Merge Request對應的分支;
管理員對代碼進行Merge。
相比較傳統的分支管理模式,Merge Request能夠給咱們帶來下面幾個好處:
每一個任務都有一個對應的分支,互相隔離,全部的代碼改動有據可查;
開發人員不用在分支間切換和合並,更專一於開發。
下面以一個示例來介紹Merge Request的工做流程
一、設置重要分支受保護
在上圖中的位置能夠將全部的重要分支設置爲受保護,重要的分支一般是master、release、test等。
二、建立Issue
任務建立後,開發人員就能夠對該任務建立Merge Request了,以下圖:
三、使用你熟悉的工具拉取Merge Request對應的分支到本地進行代碼修改,修改完成後,Push代碼到服務器,代碼推送後,管理員在Merge Request頁面能夠看到Merge按鈕,以下圖:
點擊右邊的Resole WIP status後,Merge按鈕就可使用
若是勾選Remove source brance,當Merge後,服務器端會刪除建立的分支。Merge完成,會關閉關聯的任務,但並非每一次推送均可以很是順利,有時會有衝突,當本地代碼和服務器代碼不一致時,會出現解決衝突的按鈕,解決衝突後才能進行Merge
代碼Merge後,開發人員就能夠按照一樣的流程作下一個任務了。
原文出處:fwhyy -> http://www.fwhyy.com/2018/06/Use-the-Merge-Request-working-mode-in-GitLab-in-the-team/