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 //建立自己的分支,並切換到此分支上,分支的命名規則為開發人員名字+所開發的功能名字。本例中命名為swk.feature1
vim aa.html //寫了乙個名為aa的html檔案
git add aa.js //加入跟蹤
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分支上,所以又重新執行了一遍上述命令。
git協同開發
彙總參與該項目的各個開發者的 存放趨於穩定和可發布的 切換到develop分支 git checkout develop分出乙個功能性分支 git checkout b feature discuss在功能性分支上進行開發之後,多次commit 測試之後 合併到develop git checkou...
git協同開發
當你從遠端倉庫轉殖時,實際上git自動把本地的master分支和遠端的master分支對應起來了,並且,遠端倉庫的預設名稱是origin。要檢視遠端庫的資訊,用git remote root web02 oldboypython git remote origin git remote v顯示更詳細...
使用git協同開發
官方文件 分支 分支的新建與合併 r basic merge conflicts 如果你是第乙個建立專案的人,專案放在你的github或者gitee上 1,首先你要在本地要上傳檔案的資料夾中初始化建立乙個本地倉庫 git init 2,然後你把本地的檔案提交到快取區 git add 3,然後你把快取...