gitlab多人協作開發

2022-06-14 05:36:09 字數 2701 閱讀 3405

gitlab多人協同工作

本文為亨利向《git權威指南》的作者蔣鑫老師的答疑郵件寫成。 

這裡特別感謝蔣鑫老師對我詢問gitlab的協同工作流程問題的詳細解答。 

蔣鑫老師的細緻專業的解答讓我非常感動。 

gitlab----新穎的git伺服器託管**,開源免費。你可以在自己的公司或者開發團隊搭建好乙個。 

gitlab的工作流程是 

gitlab help中建議的工作流程是這樣。如下圖。 

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

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

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

(4).推送到遠端伺服器,分支是自己的分支。 

(分支的命名規則使用小駝峰式命名法。比如我是員工孫悟空,我就推送到孫悟空分支。分支的命名規則為開發人員姓名+所開發的功能。命名中不要使用特殊字元,不要使用點。 

例如孫悟空開發的分支,命名為swkfeature1)

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

(6).建立乙個合併請求。

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

管理員在建好的專案中加入開發人員。

開發人員有相應的許可權級別,分為guest,reporter,developer,master,等這幾個角色,這幾個角色的許可權從低到高排列。

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

如下圖 

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

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

1.管理員唐僧建好了乙個專案,把孫悟空加入,並授予developer角色許可權,唐僧本身就是比孫悟空高一級的master角色。唐僧在自己的電腦上設定好了master分支為受保護分支。 

2.員工孫悟空在自己電腦上工作,並推送已經寫好的**到遠端伺服器的孫悟空分支上,即swkfeature1上 

孫悟空做了如下操作

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會提示為推送失敗 

圖為孫悟空鍵入的命令 

孫悟空在commit頁面上瀏覽分支swkfeature1,然後向專案領導唐僧建立乙個合併請求。 

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

手機郵箱可以通過簡訊的方式通知唐僧,唐僧可以實時看到合併要求。

管理員唐僧對要求合併的分支**進行審核。 

管理員唐僧從伺服器上獲取孫悟空提交的分支。 

git fetch

然後孫悟空推送的遠端新分支被管理員唐僧拉拽到本地,但是不是以本地分支存在, 

而是儲存在 .git/refs/heads 之外(.git/refs/remotes/origin/之中)的遠端分支。 

管理員唐僧可以如下方法對孫悟空的分支進行審核。 

執行 git log master..origin/swkfeature1 //可以看到孫悟空推送了幾個提交。 

管理員唐僧可以合併孫悟空的分支: 

git merge origin/swkfeature1 

管理員唐僧可以逐一對孫悟空的提交審核。如果發現有問題,管理員唐僧可以本地回滾。 

git reset --hard head^ # 或 master@ 

幾個反覆後,當孫悟空的分支審核無誤,管理員唐僧將合併後的本地 master 分支推送到遠端伺服器: 

git push # 預設 remote 為 origin

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

圖 唐僧鍵入的命令 

這個時候,唐僧開啟gitlab相應的專案,檢視master分支的內容。發現伺服器上面有了孫悟空提交的源**了。 

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

合併請求就被關閉了。 

4.孫悟空那邊。 

孫悟空看到請求已經接受。

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

git checkout master 

git merge --ff origin/master 

swkfeature1分支完成使命,刪掉吧: git branch -d swkfeature1 

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

多人協作開發

idea裡用碼雲進行協作開發 碼雲中除了master分支以外,需要多個分支,每個分支對應乙個開發人員 開發人員平時編寫 然後提交給自己的分支,在功能完成後再從自己分支提交到master分支 ieda 操作 編寫完 後,在自己的local brancher分支下,將 commit push到自己的分支...

git github多人協作開發

多個人同時向乙個倉庫中提交 倉庫主人 倉庫主頁 collaborators copy invite link 生成邀請鏈結 被邀請者 登入 github 並且訪問邀請鏈結 accept 同意邀請 此時就可以愉快的多個人合作開發了.git多人合作.png 建立分支git branch 分支名 git ...

10 多人協作開發

多人協作開發實現步驟1.由張三上傳乙個基本版本到張三的github遠端庫master上。2.李四登入github賬戶訪問remoteb版本庫。fork 將張三的版本 到李四的個人github中。3.李四 在github上新建乙個分支dev 本地庫中也得新建乙個dev分支 4.李四 將本地庫的dev分...