1. 程式人生 > >使用git和gitlab進行協同開發流程(轉發)

使用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分支中分離出來,用於開發者存放基本穩定程式碼。每個開發者的倉庫相當於源倉庫的一個映象,每個開發者自己的倉庫上也有master和develop。開發者把功能做好以後,是存放到自己的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

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

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

相關推薦

使用gitgitlab進行協同開發流程(轉發)

看了一下此文,感覺流程管理比較合理,對個人有一些啟發,轉發記錄一下,後續可參考 一、基本概念 1.倉庫(Repository) ①源倉庫(線上版本庫) 在專案的開始,專案的發起者構建起一個專案的最原始的倉庫,稱為origin。 源倉庫的有兩個作用: 1

使用gitgithub進行協同開發流程

搜到的一位大神寫的東西,感覺很不錯。收了! 它的老家:https://github.com/livoras/blog/issues/7 以下是原文內容: 目錄 前言 倉庫(Repository) 源倉庫 開發者倉庫 分

sourceTree工具gitgitlab協同使用

隨著年齡的增加,我發現自己記性越來越差,有些東西幾個月就忘記了,再想做的時候一臉懵逼。但是有句話說的不是挺好麼:好記性不如爛筆頭,那我就抽點時間整理一下,以便自己回頭看,同時為了其他同行們做個參考。

使用Git進行協同開發

用了一段時間github,一直想用時間來對git的使用來做一段筆記,前段時間比較忙,現在沉下心來學習也是極好的。 很多專案開發會採用git這一優秀的分散式版本管理工具來進行專案版本管理。因為git的使用非常靈活,所以在實際操作中會有許多不同的工作流程。不同團隊對於不同專案會有不同的協作方式。掌握git版

GitGitlab協同工作

開發十年,就只剩下這套架構體系了! >>>   

華為如何實現基於Git的跨地域協同開發

git 跨地域協同開發跨地域開發的需求其實由來已久,在IT/互聯網發展的早期就已存在,只不過限於當時網絡環境的因素,無法在線上有效的完成協同工作,所以沒法實際開展。而隨著近十年網絡的快速發展,跨地域協同開發線變得可能而且越來越普遍,尤其是在大公司內部。同時隨著行業的發展,敏捷開發模式的不斷推廣,軟件交付和更

git gitLab 使用總結

1.git   Git是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的專案。 Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體。 http://www.runoob.com/git/git-se

【雲端計算導論】實驗三 使用PyCharmVagrant進行遠端開發

本週目標: 一、安裝Vagrant並使用Vagrant安裝CentOS 二、PyCharm配置Vagrant Interpreter進行開發 三、使用Vagrant和PyCharm開發一個簡單的Web程式 四、設定環境變數,使用雲伺服器GPU 開始之前… 在

gitgithub新手快速操作流程

users 機器 osc success mach 托管 rsa 方案 文檔 git和github新手快速操作流程 本文主要介紹利用git版本控制將項目托管到遠程倉庫github上的一般性操作流程,為了給正在學習git的同學們一個小小的參考,以便更輕松的去深

使用gitgithub進行檔案同步

個人理解:git和github就是通過用命令的方式,進行本機檔案和github專案檔案的同步,避免了用滑鼠進行上傳/下載的操作。以前不知道使用程式碼管理工具,最後寫的一些東西都沒有了,由於硬碟壞了或者不小心格式化了之類的,後來使用了Git和Github來託管自己的程式碼和讀書

Android Studio中Git的配置及協同開發

以前使用Studio版本控制使用的都是SVN,最近入職了新公司使用的GIT,在網上找了一下資料,在此記錄下。 中間也遇到一個小問題就是新導下來的專案沒法提交,右鍵沒有“Git”選單,解決方法是在設定裡面“Verson control”在右側選擇相應的工程,點選“+”號即可

在使用DelphiXE3SQLite3進行程式開發時,解決最後一個字元亂碼的問題

在使用DelphiXE3和SQLite3進行程式開發時,如果使用原版的SQLiteTable3,當使用UTF8Decode函式之後,可能依然存在亂碼問題,一個表現就是,最後一個漢字顯示為框,後面跟一個問號,其他的漢字解碼正常。後來跟蹤了一下SQLiteTable3的原始碼,從

使用Kubernetes、K3sTraefik2進行本地開發

>作者簡介 > >Vyacheslav,擁有運維和專案管理經驗的軟體工程師 ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200624163633228.png?x-oss-process=image/watermark,type_ZmFuZ3poZ

Git學習筆記(三)遠程庫(GitHub)協同開發,fork忽略特殊文件

tex 情況 learn 多人 版本管理 獲得 logs 秘鑰 多個 遠程庫   遠程庫,通俗的講就是不再本地的git倉庫!他的工作方式和我們本地的一樣,但是要使用他就需要先建立連接!   遠程庫有兩種,一個是自己搭建的git服務器;另一種就是使用GitHub,這個網站就是

Git & Gitlab 開發規範流程

col 參數 reset info ticket erb 代碼review 最新 merge 第一步:clone開發分支到本地 源倉庫建立以後,開發者需要自己去復制一份到本地 #獲取源倉庫項目 #舊版本為例 $ git clone [email protected]

使用Git與GitHub協同開發並搭建私有GitLab代碼托管服務器

tlab conflict mixed its ssh 令行 mas windows安裝 emc 目錄 [TOC] Git的發展史 Linus在1991年創建了開源的Linux,從此全世界的工程師參與了Linux的開發,期初Linus是通過手動diff的方式進行代碼審核和合

使用GitGitlab開發工作流程

一.git常用命令     1.git init     2.git add <file>     3.git commit     4.git statu

協同OA對業務管理進行流程的梳理

流程管理通常會是在企業管理流程複雜或者實施大型ERP軟體之前做梳理,然而企業忽視一個問題協同OA軟體在實施過程中流程管理的優化、改進以及確定同樣對整個軟體實施和推進起到不可或缺的作用。國內知名管理諮詢公司AMT諮詢的流程管理專家針對企業實施協同OA前的流程管理梳理提出以下

Git初體驗——git項目開發流程

創建目錄 管理 文本 目錄 ria 遠程 歷史 zookeepe clas 眾所周知,Git是一款版本控制軟件,之前總是習慣把每次修改後的代碼打包並且標註好時間等信息加以區分,使用git之後就完全不需要這麽做了。 1.安裝git: 官網下載安裝即可,沒什麽復雜的步驟 2.新

網頁設計、web前端、後臺的開發流程註意事項 -----轉

開發人員 命名 彈出層 設計效果圖 元素 文檔 這一 dem sof 工作2年了,總感覺每次做項目的時候,都是趕時間,趕時間,加班幾班,可是最後總結一看,百分之50的時間都浪費在做無用功上面了,甚至因為設計人員的失誤,造成了前端和程序大量的返工,休整,加班,造成了開發人員