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


一、基本概念

1.倉庫(Repository)

①源倉庫(線上版本庫)

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

源倉庫的有兩個作用:

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

2.存放趨於穩定和可發布的代碼 

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

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

任何開發者都不會對源倉庫進行直接的操作,源倉庫建立以后,每個開發者需要做的事情就是把源倉庫的“復制”一份,作為自己日常開發的倉庫。這個復制是gitlab上面的fork

每個開發者所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-*,*為需要開發的功能的名稱。

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

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就是我們要開發的功能
    >>> git add .
    >>> git commit -m 'finish discuss feature'
    # 提交更改,多次測試以后
    >>> git checkout develop
    # 回到develop分支
    >>> git merge --no-ff feature-discuss
    # 把做好的功能合並到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
    >>> git merge --no-ff manager-develop
    >>> git push origin develop

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM