gitlab多人協同工作

gitlab多人協同工作

本文爲亨利向《Git權威指南》的作者蔣鑫老師的答疑郵件寫成。 
這裏特別感謝蔣鑫老師對我詢問gitlab的協同工作流程問題的詳細解答。 
蔣鑫老師的細緻專業的解答讓我非常感動。 

原文轉自作者原博文地址非常感謝作者的提供
gitlab----新穎的git服務器託管網站,開源免費。你可以在自己的公司或者開發團隊搭建好一個。 
gitlab的工作流程是 
gitlab help中建議的工作流程是這樣。如下圖。 
1 

(1).開發成員拷貝管理員建立好的項目到自己本地。

(2).創建自己的分支。

(3).在自己的分支上寫代碼,並提交。

(4).推送到遠程服務器,分支是自己的分支。 
(分支的命名規則使用小駝峯式命名法。比如我是員工孫悟空,我就推送到孫悟空分支。分支的命名規則爲開發人員姓名+所開發的功能。命名中不要使用特殊字符,不要使用點。 
例如孫悟空開發的分支,命名爲swkFeature1)

(5).在Commit頁面上瀏覽分支。

(6).創建一個合併請求。

(7).團隊的管理員或者領導者審查並且決定是否合併員工提交的分支到主分支上。 

管理員在建好的項目中加入開發人員。

開發人員有相應的權限級別,分爲Guest,Reporter,Developer,Master,等這幾個角色,這幾個角色的權限從低到高排列。

Developer能夠推送和刪除沒有保護的分支,Master可以對沒有保護和有保護的分支進行操作。如圖1所示。

如下圖 

2 

我們使用下面這個圖示中的分支模型進行工作。 

Git 的開發者都喜歡以這種方式來開展工作,在master 分支中保留完全穩定的代碼,即已經發布或即將發佈的代碼。 
與此同時,他們還有一個名爲develop 專門用於後續的開發,或僅用於穩定性測試。當然並不是說一定要絕對穩定,不過一旦進入某種穩定狀態, 
便可以把它合併到master 裏。還有在工作中,把開發任務分解爲各個功能或者模塊, 
用topic(topic branch主題分支,有又成爲feature branch特性分支),實現之後並測試穩定之後,可以合併到其他分支。 
000 

Git 的開發者都喜歡以這種方式來開展工作,在master 分支中保留完全穩定的代碼,即已經發布或即將發佈的代碼。 
與此同時,他們還有一個名爲develop分支 專門用於後續的開發,或僅用於穩定性測試。當然並不是說一定要絕對穩定, 
不過一旦進入某種穩定狀態,便可以把它合併到master 裏。 
還有在工作中,把開發任務分解爲各個功能或者模塊,用topic分支(topic branch主題分支,有又稱爲feature branch特性分支), 
比如實現功能1,在develop分支的基礎上產生分支feature1,實現功能2,有分支feature2。 
feature1和feature2實現了要求的功能之後,合併到develop分支上去。develop分支測試穩定之後,可以合併到master分支上去。 



07-gitlab工作流程4



情景(以下的模擬場景沒有把develop分支考慮進去,直接在master分支上分解功能分支。)

1.管理員唐僧建好了一個項目,把孫悟空加入,並授予Developer角色權限,唐僧本身就是比孫悟空高一級的Master角色。唐僧在自己的電腦上設定好了master分支爲受保護分支。 

3

2.員工孫悟空在自己電腦上工作,並推送已經寫好的代碼到遠程服務器的孫悟空分支上,即swkFeature1上 
Snap13

孫悟空做了如下操作

git clone [email protected]:root/testc01.git  //從管理員唐僧那裏克隆項目

cd testc01 //進入項目工作

git checkout -b swkFeature1 //創建自己的分支,並切換到此分支上,分支的命名規則爲開發人員名字+所開發的功能名字。本例中命名爲swkfeature1

vim aa.html //寫了一個名爲aa的html文件 

git add aa.html //加入跟蹤

ggit commit -am "swkFeature1 is ready" //提交

git push origin swkFeature1 //推送到遠程服務器孫悟空分支上,git提示推送成功

git push origin swkFeature1:master //孫悟空想嘗試直接推送到受保護的分支上,孫悟空是沒有這個權限的,git會提示爲推送失敗 

圖爲孫悟空鍵入的命令 

Snap15 

孫悟空在Commit頁面上瀏覽分支swkFeature1,然後向項目領導唐僧創建一個合併請求。 
image

3.這個合併請求除了唐僧可以登錄gitlab上看到之外,還可以通過郵件方式看到。唐僧即使沒有登錄gitlab,只要他的郵箱支持手機郵箱等方式, 
手機郵箱可以通過短信的方式通知唐僧,唐僧可以實時看到合併要求。

image 

管理員唐僧對要求合併的分支代碼進行審覈。 
管理員唐僧從服務器上獲取孫悟空提交的分支。 
git fetch

然後孫悟空推送的遠程新分支被管理員唐僧拉拽到本地,但是不是以本地分支存在, 
而是保存在 .git/refs/heads 之外(.git/refs/remotes/origin/之中)的遠程分支。 
管理員唐僧可以如下方法對孫悟空的分支進行審覈。 
執行 
git log master..origin/swkFeature1 //可以看到孫悟空推送了幾個提交。 

管理員唐僧可以合併孫悟空的分支: 
git merge origin/swkFeature1 
管理員唐僧可以逐一對孫悟空的提交審覈。如果發現有問題,管理員唐僧可以本地回滾。 
git reset --hard HEAD^ # 或 master@{1} 
幾個反覆後,當孫悟空的分支審覈無誤,管理員唐僧將合併後的本地 master 分支推送到遠程服務器: 
git push # 缺省 remote 爲 origin


圖 唐僧在自己的電腦上工作,審覈孫悟空提交的分支代碼,決定是否合併。 
Snap20

圖 唐僧鍵入的命令 

Snap22 

這個時候,唐僧打開gitlab相應的項目,查看master分支的內容。發現服務器上面有了孫悟空提交的源代碼了。 
Snap23

唐僧可以在那個請求頁面下關閉合並請求。gitlab合併請求有自動的功能,但是還是需要管理員唐僧獲取下來,合併,測試是否有問題。不建議使用gitlab的自動合併功能。 

image

合併請求就被關閉了。 

image

4.孫悟空那邊。 
孫悟空看到請求已經接受。

執行 git fetch 會獲取到更新的 master 分支。然後 

git checkout master 
git merge --ff origin/master 
swkFeature1分支完成使命,刪掉吧: git branch -d swkFeature1 

圖孫悟空後來鍵入的命令,圖中因爲沒有切換到master分支上,所以又重新執行了一遍上述命令。 
Snap28


本文檔的相關視頻演示

1080P高清格式在線視頻地址 百度雲登錄播放

http://pan.baidu.com/share/link?shareid=45279686&uk=1731225724&fid=392711908428280

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界


1080P高清格式在線視頻地址 Youtube

https://www.youtube.com/watch?v=5CVOnTU8nto

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界

 

720P格式視頻 在線地址 直線教程網

http://www.linecg.com/video/play29775.html

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界

 


低分辨率的視頻在線地址 優酷

(國內的99%的視頻網站不能讓用戶直接上傳1080P的視頻)

http://v.youku.com/v_show/id_XNzA5MTQ2MjYw.html

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界

 

本集1080P視頻文件 可以在網盤下載。

百度網盤

http://pan.baidu.com/s/1gdkRCwr

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界
 
Mega網盤
https://mega.co.nz/#F!QA9wVZLJ!kktjeJv6-znVd9RHg78YXA

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界
 
 115網盤 禮品文件接收方式

http://115.com/lb/5lbcjtivkelf

gitlab多人協同工作 - herry2013git - 亨利的3D幻想世界
 


 補充:

gitlab的版本更新非常頻繁,本文檔的某些步驟可能和最新版本有出入。寫這個文檔和錄製視頻,是想讓大家對gitlab的工作流程有個整體瞭解。
發佈了18 篇原創文章 · 獲贊 26 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章