GitLab 多人協(xié)同合作開發(fā)流程

隨著IT互聯(lián)網(wǎng)行業(yè)的發(fā)展趨勢,Git作為開發(fā)人員的必備技能,網(wǎng)絡(luò)使用Git教程也是多如牛毛,讓閱讀者看的眼花繚亂;所以結(jié)合自己的使用經(jīng)驗和結(jié)合網(wǎng)上一些資料,整理一篇可以供大家快速上手Git,并使用GitLab多人協(xié)同開發(fā)的教程,也算自己對Git的一個總結(jié)吧!

開篇介紹Git


介紹Git的網(wǎng)上基本都一致,我這里就不過多的介紹了,這里我提供一個網(wǎng)上公認(rèn)不錯的Git教程,廖雪峰-Git教程,廖老師的Git教程對基本操作講的很詳細(xì),但是對多人協(xié)同合作開發(fā)講就比較少了。

直入主題


一、基本概念

1、 倉庫(Repository )

  • 線上版本倉庫(這里稱為:源倉庫)

    • 項目啟動時,由項目管理者搭建起最原始的倉庫,稱 origin。
    • 源倉庫的有個作用 :
      • 1.匯總參與該項目的各個開發(fā)者的代碼
      • 2.存放趨于穩(wěn)定和可發(fā)布的代碼
    • 源倉庫應(yīng)該是受保護的,開發(fā)者不應(yīng)該直接對其進行開發(fā)工作。只有項目管理者能對其進行較高權(quán)限的操作。
  • 開發(fā)者倉庫 (獨自、本地倉庫)

    • 任何開發(fā)者都不會對源倉庫進行直接的操作,源倉庫建立以后,每個開發(fā)者需要做的事情就是把源倉庫的“復(fù)制”一份,作為自己日常開發(fā)的倉庫。這個復(fù)制是Gitlab上面的Fork
    • 每個開發(fā)者所Fork的倉庫是完全獨立的,互不干擾,甚至與源倉庫都無關(guān)。每個開發(fā)者倉庫相當(dāng)于一個源倉庫實體的影像,開發(fā)者在這個影像中進行編碼,提交到自己的倉庫中,這樣就可以輕易地實現(xiàn)團隊成員之間的并行開發(fā)工作。而開發(fā)工作完成以后,開發(fā)者可以向源倉庫發(fā)送 Pull Request ,本地倉庫先合并源倉庫,解決沖突,再發(fā)起Merge Request請求管理員把自己的代碼合并到源倉庫中的develop分支,這樣就實現(xiàn)了分布式開發(fā)工作和集中式的管理。

2、分支(Branch)

  • master branch : 主分支

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

    • develop:開發(fā)分支,一開始從master分支中分離出來,用于開發(fā)者存放基本穩(wěn)定代碼。每個開發(fā)者的倉庫相當(dāng)于源倉庫的一個鏡像,每個開發(fā)者自己的倉庫上也有master和develop。開發(fā)者把功能做好以后,是存放到自己的develop中,當(dāng)測試完以后,可以向管理者發(fā)起一個Pull Request,請求把自己倉庫的develop分支合并到源倉庫的develop中。所有開發(fā)者開發(fā)好的功能會在源倉庫的develop分支中進行匯總,當(dāng)develop中的代碼經(jīng)過不斷的測試,已經(jīng)逐漸趨于穩(wěn)定了,接近產(chǎn)品目標(biāo)了。這時候,就可以把develop分支合并。到master分支中,發(fā)布一個新版本。

      注:任何人不應(yīng)該向master直接進行無意義的合并、提交操作。正常情況下,master只應(yīng)該接受develop的合并,也就是說,master所有代碼更新應(yīng)該源于合并develop的代碼。

  • feature branch : 功能分支

    • feature:功能性分支,是用于開發(fā)項目的功能的分支,是開發(fā)者主要戰(zhàn)斗陣地。開發(fā)者在本地倉庫從develop分支分出功能分支,在該分支上進行功能的開發(fā),開發(fā)完成以后再合并到develop分支上,這時候功能性分支已經(jīng)完成任務(wù),可以刪除。功能性分支的命名一般為feature-"為需要開發(fā)的功能的名稱"。

二、舉例說明

Step 1 : 創(chuàng)建項目,搭建源倉庫
團隊開發(fā),屬于 Group級項目,Namespace使用Group name,Visibility 默認(rèn)Internal。

**Step 2:開發(fā)者Fork源倉庫 **
源倉庫建立以后,每個開發(fā)就可以去克隆一份源倉庫到自己的Gitlab賬號中,然后作為自己開發(fā)所用的倉庫。

**Step 3:把自己的項目倉庫clone到本地 **

$ git clone git@git@123.159.2.190:junting.liu/BizAdmin.git

**Step 4:本地自己構(gòu)建功能分支進行開發(fā) **
假設(shè)我們要開發(fā)一個Vue 表單組件的功能:

# 查看當(dāng)前分支
$ git branch
# 切換`develop`分支
$ git checkout develop
# 切換到一個功能性分支
$ git checkout -b feature-formComponent
# 開發(fā)完畢,先進行當(dāng)前狀態(tài)監(jiān)測
$ git status
# 將開發(fā)好的功能添加到Git暫存區(qū),并沒有提交,這個時候文件是處于工作區(qū)
$ git add .
# 這個時候你可以使用 git status 監(jiān)測下這個時候的狀態(tài)
# 將暫存區(qū)的文件提交下
$ git commit -m "修飾當(dāng)前你進行了什么操作"
# 再次使用git status 監(jiān)測下git的狀態(tài),會提示 當(dāng)前work clean 工作區(qū)很干凈
# 切回develo分支,合并功能分支
$ git checkout develop
$ git merge feature-formComponent
# 合并后,監(jiān)測狀態(tài)、沖突
$ git diff
# 刪除功能性分支
$ git branch -d feature-formComponent
# 拉取自己的遠(yuǎn)程中的develop分支,本地解決沖突
$ git pull origin junting   <remote> <branch>
#推送到自己遠(yuǎn)程的倉庫develop分支
$ git push origin develop
# 功能開發(fā)完畢,就要向源倉庫推送自的develop分支
# 先還是要拉取下源倉庫develp分支,本地合并解決沖突
# 這幾步也是跟上兩步一樣的

三、協(xié)同合作中最常用的Git命令

  • 本地使用Git,都需要先配置下自己倉庫的郵箱和用戶名,基本只使用一次
  • 常用命令
    • git clone <url> #克隆遠(yuǎn)程版本庫
    • git init #初始化本地倉庫
    • git status #查看下倉庫的當(dāng)前的狀態(tài)
    • git add <file> / . #跟蹤指定文件或所有改動過的文件
    • git commit -m "commit message" # 提交所有更新過的文件
    • git log #查看提交歷史日志
    • git relog #查看所有操作記錄日志,回退穿越很有用
    • git reset --hard HEAD # 回退
    • git pull <remote> <branch> # 拉取代碼并快速合并
    • git push <remote> <branch> # 推送代碼及快速合并
    • git fetch <remote> / --all # 獲取指定遠(yuǎn)程倉庫或所有遠(yuǎn)程倉庫代碼
    • git merge <branch> # 合并指定分支到當(dāng)前分支

Git常用命令速查表

Git常用命令速查表

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,462評論 2 378

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