使用git和gitlab進行協同開發流程

1、基本概念

1.倉庫(Repository)

①源倉庫(線上版本庫)

在項目的開始,項目的發起者構建起一個項目的最原始的倉庫,稱爲origin。git

源倉庫的有兩個做用:分佈式

1.彙總參與該項目的各個開發者的代碼gitlab

2.存放趨於穩定和可發佈的代碼 測試

源倉庫應該是受保護的,開發者不該該直接對其進行開發工做。只有項目管理者能對其進行較高權限的操做。編碼

②開發者倉庫(本地倉庫)

任何開發者都不會對源倉庫進行直接的操做,源倉庫創建之後,每一個開發者須要作的事情就是把源倉庫的「複製」一份,做爲本身平常開發的倉庫。這個複製是gitlab上面的forkcode

每一個開發者所fork的倉庫是徹底獨立的,互不干擾,甚至與源倉庫都無關。每一個開發者倉庫至關於一個源倉庫實體的影像,開發者在這個影像中進行編碼,提交到本身的倉庫中,這樣就能夠輕易地實現團隊成員之間的並行開發工做。而開發工做完成之後,開發者能夠向源倉庫項目管理

送pull request,請求管理員把本身的代碼合併到源倉庫中,這樣就實現了分佈式開發工做和集中式的管理開發

2.分支(Branch)

①master branch:主分支

master主分支從項目一開始便存在,它用於存放通過測試,已經徹底穩定代碼;在項目開發之後的任什麼時候刻當中,master存放的代碼應該是可做爲產品供用戶使用的代碼。因此,應該隨時保持master倉庫代碼的清潔和穩定,確保入庫以前是經過徹底測試和代碼reivew工作流

master分支是全部分支中最不活躍的,大概每月或每兩個月更新一次,每一次master新的時候都應該用git打上tag,來講明產品有新版本發佈。產品

②develop branch:開發分支

develop開發分支,一開始從master分支中分離出來,用於開發者存放基本穩定代碼。每一個開發者的倉庫至關於源倉庫的一個鏡像,每一個開發者本身的倉庫上也有masterdevelop。開發者把功能作好之後,是存放到本身的develop中,當測試完之後,能夠向管理者

發起一個pull request,請求把本身倉庫的develop分支合併到源倉庫的develop中。全部開發者開發好的功能會在源倉庫的develop分支中進行彙總,當develop中的代碼通過不斷的測試,已經逐漸趨於穩定了,接近產品目標了。這時候,就能夠把develop分支合併

master分支中,發佈一個新版本。

注:任何人不該該向master直接進行無心義的合併、提交操做。正常狀況下,master只應該接受develop的合併,也就是說,master全部代碼更新應該源於合併develop的代碼。

③feature branch:功能分支

feature功能性分支,是用於開發項目的功能的分支,是開發者主要戰鬥陣地。開發者在本地倉庫從develop分支分出功能分支,在該分支上進行功能的開發,開發完成之後再合併到develop分支上,這時候功能性分支已經完成任務,能夠刪除。功能性分支的命名通常

feature-*,*爲須要開發的功能的名稱。

2、如何操做(僅作舉例說明用)

Step 1:源倉庫的構建

這一步一般由項目發起人(項目管理員)來操做,源倉庫爲op/Chanjet_Asset_Management,並初始化兩個分支master和develop.

Step 2:開發者fork源倉庫

源倉庫創建之後,每一個開發就能夠去複製一份源倉庫到本身的gitlab帳號中,而後做爲本身開發所用的倉庫。假設我是一個項目中的開發者,我就到op/Chanjet_Asset_Managemen項目主頁上去fork.

Step 3:把本身開發者倉庫clone到本地

    >>> git clone http://gitlab.rd.chanjet.com/op/Chanjet_Asset_Management.git

Step 4:構建功能分支進行開發

假設如今要開發一個「討論」功能:

    >>> git checkout develop
# 切換到`develop`分支   
    >>> git checkout -b feature-discuss
# 分出一個功能性分支   
    >>> touch discuss.py
# 僞裝discuss.py就是咱們要開發的功能   
add    >>> git.
'finish discuss feature'    >>> git commit -m
# 提交更改,屢次測試之後   
    >>> git checkout develop
# 回到develop分支   
merge--no-ff feature-discuss    >>> git
# 把作好的功能合併到develop中   
    >>> git branch -d feature-discuss
# 刪除功能性分支   
    >>> git push origin develop
# 把develop提交到本身的遠程倉庫中   

此時,上本身gitlab的項目主頁中develop分支中查看,已經有discuss.py這個文件了:

Step 5:向管理員提交pull request

在完成了「討論」功能(固然,也可能對本身的develop進行了屢次合併,完成了多個功能),通過測試之後,以爲沒問題,就能夠請求管理員把本身倉庫的develop分支合併到源倉庫的develop分支中。

Step 6 管理員測試、合併

管理員登錄gitlab,看到了開發者對源倉庫發起的pull request

管理員須要作的事情就是:

1.開發者的代碼進行review

2.在他的本地測試新建一個測試分支,測試開發者的代碼:

    >>> git checkout develop
# 進入管理員本地的develop分支
    >>> git checkout -b manager-develop
# 從develop分支中分出一個叫manager-develop的測試分支測試開發者的代碼
    >>> git pull
http://gitlab.rd.chanjet.com/op/Chanjet_Asset_Management.git develop
# 把開發者的代碼pull到測試分支中,進行測試

  判斷是否贊成合併到源倉庫的develop,若是通過測試沒問題,能夠把開發者的代碼合併到源倉庫的develop中:

    >>> git checkout develop
merge--no-ff manager-develop    >>> git
    >>> git push origin develop

注:管理員一直在操做的倉庫是源倉庫。

以上,就是一個gitgitlab協同工做流的基本步驟。

相關文章
相關標籤/搜索