使用git和gitlab 進(jìn)行協(xié)同開發(fā)流程

一、基本概念

1. 倉庫(Repository)

  • 源倉庫(線上版本庫)

    在項(xiàng)目的開始,項(xiàng)目的發(fā)起者構(gòu)建起一個(gè)項(xiàng)目的最原始的倉庫,稱為origin。
    源倉庫的有兩個(gè)作用:
    -  匯總參與該項(xiàng)目的各個(gè)開發(fā)者的代碼
    - 存放趨于穩(wěn)定和可發(fā)布的代碼 
    源倉庫應(yīng)該是受保護(hù)的违崇,開發(fā)者不應(yīng)該直接對其進(jìn)行開發(fā)工作拍嵌。只有項(xiàng)目管理者能對其進(jìn)行較高權(quán)限的操作。
    
  • 開發(fā)者倉庫(本地倉庫)

    任何開發(fā)者都不會(huì)對源倉庫進(jìn)行直接的操作巩趁,源倉庫建立以后,每個(gè)開發(fā)者需要做的事情就是把源倉庫的“復(fù)制”一份淳附,作為自己日常開發(fā)的倉庫议慰。這個(gè)復(fù)制是gitlab上面的fork。每個(gè)開發(fā)者所fork的倉庫是完全獨(dú)立的奴曙,互不干擾别凹,甚至與源倉庫都無關(guān)。每個(gè)開發(fā)者倉庫相當(dāng)于一個(gè)源倉庫實(shí)體的影像洽糟,開發(fā)者在這個(gè)影像中進(jìn)行編碼炉菲,提交到自己的倉庫中,這樣就可以輕易地實(shí)現(xiàn)團(tuán)隊(duì)成員之間的并行開發(fā)工作坤溃。而開發(fā)工作完成以后拍霜,開發(fā)者可以向源倉庫發(fā)送pull request,請求管理員把自己的代碼合并到源倉庫中薪介,這樣就實(shí)現(xiàn)了**分布式開發(fā)工作****和集中式的管理**祠饺。
    

2. 分支(Branch)

  • master branch:主分支
    master:主分支從項(xiàng)目一開始便存在,它用于存放經(jīng)過測試汁政,已經(jīng)完全穩(wěn)定代碼道偷;在項(xiàng)目開發(fā)以后的任何時(shí)刻當(dāng)中,master存放的代碼應(yīng)該是可作為產(chǎn)品供用戶使用的代碼记劈。所以勺鸦,應(yīng)該隨時(shí)保持master倉庫代碼的清潔和穩(wěn)定,確保入庫之前是通過完全測試和代碼reivew的目木。master分支是所有分支中最不活躍的换途,大概每個(gè)月或每兩個(gè)月更新一次,每一次master更新的時(shí)候都應(yīng)該用git打上tag刽射,來說明產(chǎn)品有新版本發(fā)布军拟。

  • develop branch:開發(fā)分支
    develop:開發(fā)分支,一開始從master分支中分離出來柄冲,用于開發(fā)者存放基本穩(wěn)定代碼。每個(gè)開發(fā)者的倉庫相當(dāng)于源倉庫的一個(gè)鏡像忠蝗,每個(gè)開發(fā)者自己的倉庫上也有master和develop现横。開發(fā)者把功能做好以后,是存放到自己的develop中,當(dāng)測試完以后戒祠,可以向管理者發(fā)起一個(gè)pull request,請求把自己倉庫的develop分支合并到源倉庫的develop中骇两。所有開發(fā)者開發(fā)好的功能會(huì)在源倉庫的develop分支中進(jìn)行匯總,當(dāng)develop中的代碼經(jīng)過不斷的測試姜盈,已經(jīng)逐漸趨于穩(wěn)定了低千,接近產(chǎn)品目標(biāo)了。這時(shí)候馏颂,就可以把develop分支合并到master分支中示血,發(fā)布一個(gè)新版本。
    注:任何人不應(yīng)該向master直接進(jìn)行無意義的合并救拉、提交操作难审。正常情況下,master只應(yīng)該接受develop的合并亿絮,也就是說告喊,master所有代碼更新應(yīng)該源于合并develop的代碼。

  • feature branch:功能分支
    feature:功能性分支派昧,是用于開發(fā)項(xiàng)目的功能的分支黔姜,是開發(fā)者主要戰(zhàn)斗陣地。開發(fā)者在本地倉庫從develop分支分出功能分支蒂萎,在該分支上進(jìn)行功能的開發(fā)秆吵,開發(fā)完成以后再合并到develop分支上,這時(shí)候功能性分支已經(jīng)完成任務(wù)岖是,可以刪除帮毁。功能性分支的命名一般為feature-*,*為需要開發(fā)的功能的名稱豺撑。

二烈疚、如何操作(僅做舉例說明用)

Step 1:源倉庫的構(gòu)建

這一步通常由項(xiàng)目發(fā)起人(項(xiàng)目管理員)來操作,源倉庫為devops/cmdb,并初始化兩個(gè)分支master和develop.

Step 2:開發(fā)者fork源倉庫

源倉庫建立以后聪轿,每個(gè)開發(fā)就可以去復(fù)制一份源倉庫到自己的gitlab賬號中爷肝,然后作為自己開發(fā)所用的倉庫。假設(shè)我是一個(gè)項(xiàng)目中的開發(fā)者陆错,我就到devops/cmdb項(xiàng)目主頁上去fork.

Step 3:把自己開發(fā)者倉庫clone到本地
>>> git clone git@10.125.211.3:wangyichen/cmdb.git
Step 4:構(gòu)建功能分支進(jìn)行開發(fā)

假設(shè)現(xiàn)在要開發(fā)一個(gè)“資產(chǎn)收集”功能:
#首先切換到devlop分支
>>> git checkout develop

#分出一個(gè)功能性分支
>>> git checkout -b feature-gather_facts
#假設(shè)寫好了功能,gather_facts.py就是我們開發(fā)的功能
>>> touch gather_facts.py

#測試沒問題灯抛,提交更改
>>> git add.
>>> git commit -m "add gather facts feature "
#'finish gather_facts feature',現(xiàn)在我們功能開發(fā)完畢音瓷,切換回develop
>>> git checkout develop
#把完成的功能合并到develop分支
>>> git merge --no-ff feature-gather_facts
#刪除功能性分支
>>> git branch -d feature-discuss
#把develop提交到自己的遠(yuǎn)程倉庫中
>>> git push origin develop

此時(shí)对嚼,上自己gitlab的項(xiàng)目主頁中develop分支中查看,已經(jīng)有g(shù)ather_facts.py這個(gè)文件了:

Step 5:向管理員提交pull request

在完成了“資產(chǎn)收集”功能(當(dāng)然绳慎,也可能對自己的develop進(jìn)行了多次合并纵竖,完成了多個(gè)功能),經(jīng)過測試以后漠烧,覺得沒問題,就可以發(fā)起Merge Request請求,讓管理員把自己倉庫的develop分支合并到源倉庫的develop分支中靡砌。

Step 6 管理員測試已脓、合并

管理員登陸gitlab,看到了開發(fā)者對源倉庫發(fā)起的pull request通殃。管理員需要做的事情就是:

  1. 對****開發(fā)者****的代碼進(jìn)行review度液。

  2. 在他的本地測試新建一個(gè)測試分支,測試開發(fā)者的代碼:
    # 進(jìn)入管理員本地的develop分支

    git checkout develop

# 從develop分支中分出一個(gè)叫manager-develop的測試分支測試開發(fā)者的代碼
>>> git checkout -b manager-develop
# 把開發(fā)者的代碼pull到測試分支中画舌,進(jìn)行測試
>>> git pull git@10.125.211.3:wangyichen/cmdb.git develop

#判斷是否同意合并到源倉庫的develop中堕担,如果經(jīng)過測試沒問題,可以把開發(fā)者的代碼合并到源倉庫的develop中:
>>> git checkout develop
>>> git merge --no-ff manager-develop
>>> git push origin develop

注:管理員一直在操作的倉庫是源倉庫骗炉。以上照宝,就是一個(gè)git和gitlab協(xié)同工作流的基本步驟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末句葵,一起剝皮案震驚了整個(gè)濱河市厕鹃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乍丈,老刑警劉巖剂碴,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異轻专,居然都是意外死亡忆矛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門请垛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來催训,“玉大人,你說我怎么就攤上這事宗收÷茫” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵混稽,是天一觀的道長采驻。 經(jīng)常有香客問我,道長匈勋,這世上最難降的妖魔是什么礼旅? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮洽洁,結(jié)果婚禮上痘系,老公的妹妹穿的比我還像新娘。我一直安慰自己饿自,他們只是感情好汰翠,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布临谱。 她就那樣靜靜地躺著,像睡著了一般奴璃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上城豁,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天苟穆,我揣著相機(jī)與錄音,去河邊找鬼唱星。 笑死雳旅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的间聊。 我是一名探鬼主播攒盈,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哎榴!你這毒婦竟也來了型豁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尚蝌,失蹤者是張志新(化名)和其女友劉穎迎变,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飘言,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衣形,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姿鸿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谆吴。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖苛预,靈堂內(nèi)的尸體忽然破棺而出句狼,到底是詐尸還是另有隱情,我是刑警寧澤碟渺,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布鲜锚,位于F島的核電站,受9級特大地震影響苫拍,放射性物質(zhì)發(fā)生泄漏芜繁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一绒极、第九天 我趴在偏房一處隱蔽的房頂上張望骏令。 院中可真熱鬧,春花似錦垄提、人聲如沸榔袋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凰兑。三九已至妥粟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吏够,已是汗流浹背勾给。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锅知,地道東北人播急。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像售睹,于是被迫代替她去往敵國和親桩警。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

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

  • 經(jīng)領(lǐng)導(dǎo)決定昌妹,代碼管理平臺從SVN遷移到了Gitlab捶枢,在半日時(shí)間里跌跌撞撞的摸索查詢后(站在巨人的肩膀上~~),G...
    wsdadan閱讀 930評論 0 3
  • 今天我很開心飞崖!感恩女兒發(fā)燒在家休息了一天柱蟀,讓我好好的為她做了兩餐合口的飯菜! 今天我很開心蚜厉!感恩女兒買了很多水果长已!...
    無住生心1閱讀 163評論 0 0
  • 9/21楊薇貴陽【每日一結(jié)構(gòu)】結(jié)構(gòu)思考力21天思維改善訓(xùn)練營 G:【學(xué)習(xí)感悟】結(jié)構(gòu)思考力學(xué)習(xí)感悟 1.【目的】通過...
    歡喜的板栗閱讀 223評論 0 0