Git設(shè)置分支保護(hù)實(shí)現(xiàn)CodeReview卡點(diǎn)

Git設(shè)置分支保護(hù)實(shí)現(xiàn)CodeReview卡點(diǎn)

From:https://blog.csdn.net/crisschan/article/details/100922668
GIT是一個(gè)分布式版本控制系統(tǒng)的軟件,主要用來控制代碼的版本。所謂分布式也就是每一個(gè)git的客戶端都有一份完成的代碼庫,這樣如果中央服務(wù)器出現(xiàn)問題堂污,代碼也會(huì)在各個(gè)開發(fā)者的電腦上有備份榕酒。(本文以下內(nèi)容以GitLab為例)

GitFlow 模式將代碼和環(huán)境對(duì)應(yīng)

[外鏈圖片轉(zhuǎn)存失敗(img-kccgQ5lw-1568695938834)(https://i.loli.net/2019/09/17/TVxgaeYwQN2rMf9.png)]

GitFlow模式的各分支說明

    1. master
    • 主分支 , 產(chǎn)品的功能全部實(shí)現(xiàn)后 , 最終在master分支對(duì)外發(fā)布
    • 該分支為只讀唯一分支 , 只能從其他分支(release/hotfix)合并 , 不能在此分支修改
    • 另外所有在master分支的推送應(yīng)該打標(biāo)簽做記錄,方便追溯
    • 例如release合并到master , 或hotfix合并到master
    1. develop
    • 主開發(fā)分支 , 基于master分支克隆
    • 包含所有要發(fā)布到下一個(gè)release的代碼
    • 該分支為只讀唯一分支 , 只能從其他分支合并
    • feature功能分支完成 , 合并到develop(不推送)
    • develop拉取release分支 , 提測(cè)
    • release/hotfix 分支上線完畢 , 合并到develop并推送
    1. feature
    • 功能開發(fā)分支 , 基于develop分支克隆 , 主要用于新需求新功能的開發(fā)
    • 功能開發(fā)完畢后合到develop分支(未正式上線之前不推送到遠(yuǎn)程中央倉(cāng)庫
    • feature分支可同時(shí)存在多個(gè) , 用于團(tuán)隊(duì)中多個(gè)功能同時(shí)開發(fā) , 屬于臨時(shí)分支 , 功能完成后可選刪除
    1. release
    • 測(cè)試分支 , 基于feature分支合并到develop之后 , 從develop分支克隆
    • 主要用于提交給測(cè)試人員進(jìn)行功能測(cè)試 , 測(cè)試過程中發(fā)現(xiàn)的BUG在本分支進(jìn)行修復(fù) , 修復(fù)完成上線后合并到develop/master分支并推送(完成功能) , 打Tag
    • 屬于臨時(shí)分支 , 功能上線后可選刪除
    1. hotfix
    • 補(bǔ)丁分支 , 基于master分支克隆 , 主要用于對(duì)線上的版本進(jìn)行BUG修復(fù)
    • 修復(fù)完畢后合并到develop/master分支并推送 , 打Tag
    • 屬于臨時(shí)分支 , 補(bǔ)丁修復(fù)上線后可選刪除
    • 所有hotfix分支的修改會(huì)進(jìn)入到下一個(gè)release

GitFlow 主要的工作流程

代碼倉(cāng)庫的Owner設(shè)置master分支是保護(hù)分支滔灶,

    1. 有新的feature要開發(fā)的時(shí)候牧牢,首先從master拉取第一個(gè)develop分支纸兔,develop分支名就是dev疮蹦。
    1. 從dev拉取feature分支進(jìn)行編碼開發(fā)(多個(gè)開發(fā)人員拉取多個(gè)feature同時(shí)進(jìn)行并行開發(fā) , 互不影響)诸迟,feature分支命名規(guī)范:feature- XX(XX是一個(gè)唯一標(biāo)示)
    1. feature分支完成后 , 合并到dev,合并后擇刪除當(dāng)前feature愕乎。
    1. 從dev拉取release分支進(jìn)行提測(cè) , 提測(cè)過程中在release分支上修改BUG阵苇,release分支名字是release。
    1. release分支上線后 , 合并release分支到dev/master并推送合并之后刪除當(dāng)前release分支感论。
    1. 上線之后若發(fā)現(xiàn)線上BUG , 從master拉取hotfix進(jìn)行BUG修改绅项。hotfix 分支命名規(guī)范:hotfix-XXX(XXX是一個(gè)唯一標(biāo)示)。
    1. hotfix通過測(cè)試上線后 , 合并hotfix分支到dev/master并推送比肄,合并之后 , 刪除當(dāng)前hostfix
    1. 當(dāng)進(jìn)行一個(gè)feature時(shí) , 若dev分支有變動(dòng) , 如其他開發(fā)人員完成功能并上線 , 則需要將完成的功能合并到自己分支上即合并dev到當(dāng)前feature分支快耿。
    1. 當(dāng)進(jìn)行一個(gè)release分支時(shí) , 若dev分支有變動(dòng) , 如其他開發(fā)人員完成功能并上線 , 則需要將完成的功能合并到自己分支上即合并dev到當(dāng)前release分支 (因?yàn)楫?dāng)前release分支通過測(cè)試后會(huì)發(fā)布到線上 , 如果不合并最新的dev分支 , 就會(huì)發(fā)生丟代碼的情況)。

Git的分子保護(hù)

[外鏈圖片轉(zhuǎn)存失敗(img-CfzADDYw-1568695938859)(https://i.loli.net/2019/09/17/4wPgvOm72Q9zT8K.png)]

在Git的分支合并過程中支持方式芳绩,一種是在本地將source branch 合并到 target branch掀亥,然后再切換到target branch后將target branch push到遠(yuǎn)端target branch。另外一種是將本地的source branch push到遠(yuǎn)端的source branch妥色,然后在gitlab上提交一個(gè)將source branch 合并到 target branch的merge request搪花。那么為了能夠到達(dá)我們強(qiáng)制的CodeReview卡點(diǎn),我們將master branch(也就是生產(chǎn)發(fā)布分支)、release branch(也就是提測(cè)分支)進(jìn)行保護(hù)撮竿,不能接受直接的push request丁稀,只能通過提交merge request,并有架構(gòu)師或者技術(shù)負(fù)責(zé)人進(jìn)行CodeReview通過后倚聚,完成Merge线衫。那么如何完成Git的分支保護(hù)呢?

首先進(jìn)入對(duì)應(yīng)的代碼倉(cāng)惑折,然后點(diǎn)擊Settings下的Repository Settings選擇Protected Branches選項(xiàng)

[外鏈圖片轉(zhuǎn)存失敗(img-VgWWlWh1-1568695938870)(https://i.loli.net/2019/09/17/WtGv1JycYg6PRxo.png)]

選擇對(duì)應(yīng)的分支分別作如下設(shè)置:

限制了develop分支授账,develop分支、release分支惨驶、以及master分支只能通過merge request的方式合并白热,不可以直接的push代碼,同時(shí)設(shè)置了需要Master進(jìn)行合并的請(qǐng)求的code review后點(diǎn)擊完成后完成合并粗卜。(這里面的Master就是開發(fā)架構(gòu)師或者技術(shù)負(fù)責(zé)人等角色)

提交一個(gè)Merge Request

點(diǎn)擊merge requst菜單屋确,然后新建一個(gè)merge request

[外鏈圖片轉(zhuǎn)存失敗(img-8ny2Y1VP-1568695938875)(https://i.loli.net/2019/09/17/jWgx1k4VF89UqQt.png)]

然后選擇對(duì)應(yīng)的source branch和target branch后,點(diǎn)擊下一步:

[外鏈圖片轉(zhuǎn)存失敗(img-sjlwYYtQ-1568695938880)(https://i.loli.net/2019/09/17/caKZCW52pLyX8kr.png)]

進(jìn)入后輸入相關(guān)內(nèi)容后续扔,點(diǎn)擊提交合并請(qǐng)求:

[外鏈圖片轉(zhuǎn)存失敗(img-nIi7WDl1-1568695938881)(https://i.loli.net/2019/09/17/Jr698w4GeMaXysZ.png)]

[外鏈圖片轉(zhuǎn)存失敗(img-81SfDzqW-1568695938887)(https://i.loli.net/2019/09/17/PHUiSv247zWuNJR.png)]

其中(出去如下部分以外都選擇默認(rèn)值或者為空):

操作項(xiàng) 說明
Title 標(biāo)題
Description 描述寫清具體包含的feature
Assignee 分配到的人必須為項(xiàng)目?jī)?nèi)的技術(shù)負(fù)責(zé)人或者架構(gòu)師
Milestone no milestone
Label no label

完成后攻臀,就等待code review過后等待反饋意見。通過后就可以完成合并了纱昧。

IDE:Intelj的codereview插件

1刨啸、GitLab Access Token
菜單:User Settings->
Access Tokens 進(jìn)入Access Token添加頁面

Name 名稱,根據(jù)自己喜好來即可
Expires at 過期時(shí)間识脆,最遠(yuǎn)可以選擇到10年后设联,根據(jù)自己需要填寫即可
Scopes 范圍,這里選擇api就夠用了
創(chuàng)建完成后灼捂,麻煩暫時(shí)保存token离例。因?yàn)橐坏┧⑿禄蛘咧亻_頁面,token就不可見了悉稠。

2宫蛆、IntelliJ IDEA GitLab插件使用
安裝以下兩個(gè)插件即可:

Gitlab Projects:https://plugins.jetbrains.com/plugin/7975-gitlab-projects
Gitlab Integration:https://plugins.jetbrains.com/plugin/7319-gitlab-integration

3、Visual Studio
Visual Studio GitLab插件:https://marketplace.visualstudio.com/items?itemName=MysticBoy.GitLabExtensionforVisualStudio

4偎球、Visual Studio Code
Visual Studio Code GitLab插件:https://marketplace.visualstudio.com/items?itemName=jasonn-porch.gitlab-mr

5洒扎、Atom
Atom GitLab 插件:https://atom.io/packages/gitlab

關(guān)注我,關(guān)注測(cè)試
FROM:https://blog.csdn.net/crisschan

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衰絮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子磷醋,更是在濱河造成了極大的恐慌猫牡,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邓线,死亡現(xiàn)場(chǎng)離奇詭異淌友,居然都是意外死亡煌恢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門震庭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑰抵,“玉大人,你說我怎么就攤上這事器联《矗” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵拨拓,是天一觀的道長(zhǎng)肴颊。 經(jīng)常有香客問我,道長(zhǎng)渣磷,這世上最難降的妖魔是什么婿着? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮醋界,結(jié)果婚禮上竟宋,老公的妹妹穿的比我還像新娘。我一直安慰自己形纺,他們只是感情好袜硫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挡篓,像睡著了一般婉陷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上官研,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天秽澳,我揣著相機(jī)與錄音,去河邊找鬼戏羽。 笑死担神,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的始花。 我是一名探鬼主播妄讯,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼酷宵!你這毒婦竟也來了亥贸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤浇垦,失蹤者是張志新(化名)和其女友劉穎炕置,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朴摊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年默垄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甚纲。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡口锭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出介杆,到底是詐尸還是另有隱情鹃操,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布这溅,位于F島的核電站组民,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悲靴。R本人自食惡果不足惜臭胜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望癞尚。 院中可真熱鬧耸三,春花似錦、人聲如沸浇揩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胳徽。三九已至积锅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間养盗,已是汗流浹背缚陷。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留往核,地道東北人箫爷。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像聂儒,于是被迫代替她去往敵國(guó)和親虎锚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容