gitlab 多人協同工作
阿新 • • 發佈:2019-01-02
Gitlab多人協同工作 Master & Developer目錄
開發前準備
開發中過程
Developer操作說明
Master操作說明
附錄(Gitlab基本操作)開發前準備開發前準備
Gitlab多人協同工作,所有開發者會被新增進一個共同的工作組。協同工
作開始前,群組管理員及開發者都有一些準備工作要做。
群組管理員(Master):
1 -在Gitlab上建立群組
2 -為群組新增成員並賦予許可權
3 -為群組新建專案
4 -為群組專案建立分支
開發者(Developer):
1.去Gitlab註冊個人賬號並添加個人SSH Key(參照本PPT附錄)
2.請群組管理員將你的賬號新增進open-source群組開發中過程開發中過程
日常開發中開發者與群組管理員的分工。
開發者(Developer):
1. 克隆遠端倉庫到本地(只在第一次做一次)
2. 獲取遠端最新版本並merge到本地
3. 切換到自己的分支
4. 在自己的分支上寫程式碼並提交
5. 將自己分支的更新push到遠端
6. 在Gitlab上發起請求,請求合併自己的分支到遠端的master分支
群組管理員(Master):
1. 管理員收到合併請求,審查程式碼並決定是否通過合併請求Developer開發者Workflow
Gitlab建議的協同工作流開發者Workflow
①克隆管理員建立好的專案到本地
②切換到自己的分支
③在自己的分支上寫程式碼並提交
④push到遠端伺服器(分支是自己
的分支)開發者Workflow
⑤在commit頁面上瀏覽分支
Projects -> 專案名稱-> Repository -> Commits -> 選擇自己的分支,點選單個連結可以看到更新的具體內容。開發者Workflow
點選Merge Requests -> New Merge Request,在New Merge Request頁面選擇自己要合併的分支和要併入的分支
(master),點選Compare branches and continue繼續。
下拉選擇自己的分支 被合併的分支,master
⑥在Gitlab頁面建立一個合併請求開發者Workflow
開發者操作總結:
1. 克隆管理員建立好的專案到自己本地
2. 切換到自己的分支(分支由管理員建立)
3. 在自己的分支上寫程式碼,並提交
4. 推送到遠端伺服器,分支是自己的分支
5. 在commit頁面上瀏覽分支
6. 建立一個合併請求
其中:遠端倉庫由管理員建立,開發者使用的分支也由管理員事先建立。開發者在Gitlab頁面上建立了合併請求
之後,由管理員審查程式碼並最終通過合併請求,完成分支到主分支的合併。MasterMaster – 建立群組
左側選單Project -> Groups -> New Group,填入群組名稱和描述,選擇許可權選項點選Create group提交。
寫入Group名稱
寫入Group描述
群組和群組下的Projects僅對群內部成員可見
Gitlab登入使用者均可見
所有人都可見,沒有任何許可權管控Master - 新增群組成員
左側選單Group -> 單擊群組名稱-> Members進入該群組成員管理頁面,按照指引新增成員
從下拉選單選擇要新增的使用者
設定許可權 過期時間,不寫為永久有效
開發人員的許可權級別,由低到高依次是
Guest,Reporter,Developer,Maste。一般
給需要提交程式碼的開發者許可權為DeveloperMaster - 新建群組專案
單擊左邊選單欄,選擇Group -> 單擊群組名稱-> New Project,按照指引新建專案。Master – 為群組專案建立分支
進入Project頁面,在SSH位址列右邊點+,下拉選單中選擇New branch,建立新的分支。
寫入Group名稱Master – 為群組專案建立分支
進入Project頁面,在SSH位址列右邊點+,下拉選單中選擇New branch,建立新的分支。
分支的命名規則使用小駝峰式命名法,具體為開發
人員工號+所開發的功能/要解決的BUG名,工號首
字母小寫。命名中不要使用特殊字元,不要使用點。
分支命名:
f1322817Feature1
f1322817Bug051Master – 合併分支
管理員收到合併請求,審查程式碼並決定是否通過合併請求。點選Accept Merge Request通過,程式碼完成合並。附錄
Gitlab基本操作1.使用者註冊
按要求填寫完所有專案之後單擊Register提交。2.添加個人SSH KEY
在自己電腦上新開Git Bash視窗,用命令ssh-keygen.exe –t rsa生成SSH公鑰。在隱形資料夾.ssh下生成的id_rsa.pub
即為SSH公鑰檔案。2.添加個人SSH KEY
單擊使用者頭像,選擇Settings。2.添加個人SSH KEY
複製公鑰檔案內容,貼到Key的框框中,
點選Add Key.
複製過程中不能有換行。
一個公鑰(一臺主機)只能被一個用
戶使用。
單擊SSH Keys切換到SSH Keys配置頁面。複製剛才本地生成的公鑰檔案內容,貼到Key的框框中,點選Add Key新增。2.添加個人SSH KEY
至此,個人SSH KEY新增完成。3.新建project
單擊左邊選單欄,選擇Projects -> New Project3.新建project
寫入專案名稱,和專案描述,點選Create project。
Visibility Level根據實際需要選擇。3.新建project
Project建立完成之後,會產生一個以project.git命名的倉庫。剩下就是用git上傳下載程式碼,管理自己的專案。4.匯入專案
在本地主機並設定下git的使用者名稱和郵箱。
③檢視當前git配置
①設定使用者名稱
②設定郵箱4.匯入專案
如果專案在本地已經存在,需要匯入到gitlab,可以通過命令直接將專案匯入上去。
⑤提交
①進入專案資料夾
②初始化git倉庫
③新增遠端倉庫
④將專案檔案存進暫存區
⑥將更新推送到遠端git倉庫4.匯入專案
如果本地沒有專案倉庫,可以從gitlab上把專案克隆下來。
①克隆遠端倉庫到本地電腦
②進入專案資料夾
③檢視專案檔案目錄4.匯入專案
如果已經拉取過遠端倉庫,每次在本地編輯程式碼之前,應該從遠端獲取最新版本並merge到本地。5.分支(branch)操作
檢視分支:git branch
①檢視本地分支
②檢視遠端分支5.分支(branch)操作
建立本地分支並切換到分支:git branch [name] , git checkout [name]
①建立本地分支
②切換分支
③建立新分支並立即切換到新分支,
等同於上面兩條命令5.分支(branch)操作
刪除本地分支:git branch -d [name]。注意刪除分支時該分支不能存在還未合併的程式碼。
①刪除本地分支5.分支(branch)操作
建立遠端分支:(建立本地分支,並push到遠端)git push origin [name]
①將本地分支push到遠端5.分支(branch)操作
刪除遠端分支:git push origin :[name]
①刪除遠端分支
把本地某個分支提交到遠端倉庫,並作為遠端倉庫的分支,完整命令是:git push origin [name]:[name]。
刪除遠端分支的命令其實就是讓左邊的分支為空,其作用是刪除遠端的分支。但是該分支在本地還是會儲存的。5.分支(branch)操作
合併分支:git merge [name]
③提交修改
①切換到f1322817Feature2分支
②修改一個/多個檔案
④切換回master分支
⑤合併f1322817Feature2的修改到master分支6.子模組(submodule)操作
新增子模組:git submodule add [url][path]
①新增子模組6.子模組(submodule)操作
初始化子模組:git submodule init
①初始化子模組,只需要在首次拉取的時候執行一次。6.子模組(submodule)操作
更新子模組:git submodule update
①更新子模組,每次更新或切換分支後都需要執行一下。
submodule專案和它的父專案本質上是2個獨立的git倉庫。只是父專案儲存了它依賴的submodule專案的版本號而
已。如果同組的同事更新了submodule,然後更新了父專案中依賴的版本號,你需要在git pull之後,呼叫git
submodule update來更新submodule的資訊。6.子模組(submodule)操作
刪除子模組,有4個步驟
①git rm -cached 子模組
②編輯.gitmodules,將子模組相關配置節點刪除
③編輯.git/config,將子模組相關配置節點刪除
④手動刪除子模組殘留的目錄6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端。
①在ST專案資料夾下切換到自己的分支
②新增子模組
③檢視git狀態,此時ST專案資料夾下
多了兩個檔案/資料夾6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端倉庫。
④進入子模組資料夾
⑤切換到子模組下自己的分支
⑦檢視修改後的狀態
⑧提交修改
⑥修改子模組的檔案6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端倉庫。
⑨push修改到遠端自己的分支
之後的操作就是去Gitlab網頁上發起合併分支申請,等待管理員合併子模組的程式碼去master分支了。
特別注意:
在主專案(ST)和子模組(COMMON)之間切換目錄的時候,切換目錄的同時特別要注意切換自己的分支,否
則所有的操作都跟自己的使用者無關,最後的修改無效無法提交。6.子模組(submodule)操作
使用submodule注意事項:
1.對submodule做修改操作前,確保切換到正確的submodule項
目分支。因為進入submodule資料夾,分支狀態還保留在父項
目的分支下。對submodule做修改前,要立即切換到
submodule下你的本地分支。
2.git pull 之後,立即執行git status,如果發現submodule有修改,
立即執行git submodule update。
3.儘量不要使用git commit -a,git add存在的意義就是讓你對加
入快取區的檔案做第二次確認,而git commit -a相當於跳過了
這個確認過程。7.忽略的檔案/資料夾
無須納入Git管理的檔案(通常都是些自動生成的檔案,日誌檔案/臨時檔案等),可以通過建立一個名
為.gitignore的檔案來管理。Git官方文件(中文)
https://git-scm.com/book/zh/v2The End
開發前準備
開發中過程
Developer操作說明
Master操作說明
附錄(Gitlab基本操作)開發前準備開發前準備
Gitlab多人協同工作,所有開發者會被新增進一個共同的工作組。協同工
作開始前,群組管理員及開發者都有一些準備工作要做。
群組管理員(Master):
1 -在Gitlab上建立群組
2 -為群組新增成員並賦予許可權
3 -為群組新建專案
4 -為群組專案建立分支
開發者(Developer):
1.去Gitlab註冊個人賬號並添加個人SSH Key(參照本PPT附錄)
2.請群組管理員將你的賬號新增進open-source群組開發中過程開發中過程
日常開發中開發者與群組管理員的分工。
開發者(Developer):
1. 克隆遠端倉庫到本地(只在第一次做一次)
2. 獲取遠端最新版本並merge到本地
3. 切換到自己的分支
4. 在自己的分支上寫程式碼並提交
5. 將自己分支的更新push到遠端
6. 在Gitlab上發起請求,請求合併自己的分支到遠端的master分支
群組管理員(Master):
1. 管理員收到合併請求,審查程式碼並決定是否通過合併請求Developer開發者Workflow
Gitlab建議的協同工作流開發者Workflow
①克隆管理員建立好的專案到本地
②切換到自己的分支
③在自己的分支上寫程式碼並提交
④push到遠端伺服器(分支是自己
的分支)開發者Workflow
⑤在commit頁面上瀏覽分支
Projects -> 專案名稱-> Repository -> Commits -> 選擇自己的分支,點選單個連結可以看到更新的具體內容。開發者Workflow
點選Merge Requests -> New Merge Request,在New Merge Request頁面選擇自己要合併的分支和要併入的分支
(master),點選Compare branches and continue繼續。
下拉選擇自己的分支 被合併的分支,master
⑥在Gitlab頁面建立一個合併請求開發者Workflow
開發者操作總結:
1. 克隆管理員建立好的專案到自己本地
2. 切換到自己的分支(分支由管理員建立)
3. 在自己的分支上寫程式碼,並提交
4. 推送到遠端伺服器,分支是自己的分支
5. 在commit頁面上瀏覽分支
6. 建立一個合併請求
其中:遠端倉庫由管理員建立,開發者使用的分支也由管理員事先建立。開發者在Gitlab頁面上建立了合併請求
之後,由管理員審查程式碼並最終通過合併請求,完成分支到主分支的合併。MasterMaster – 建立群組
左側選單Project -> Groups -> New Group,填入群組名稱和描述,選擇許可權選項點選Create group提交。
寫入Group名稱
寫入Group描述
群組和群組下的Projects僅對群內部成員可見
Gitlab登入使用者均可見
所有人都可見,沒有任何許可權管控Master - 新增群組成員
左側選單Group -> 單擊群組名稱-> Members進入該群組成員管理頁面,按照指引新增成員
從下拉選單選擇要新增的使用者
設定許可權 過期時間,不寫為永久有效
開發人員的許可權級別,由低到高依次是
Guest,Reporter,Developer,Maste。一般
給需要提交程式碼的開發者許可權為DeveloperMaster - 新建群組專案
單擊左邊選單欄,選擇Group -> 單擊群組名稱-> New Project,按照指引新建專案。Master – 為群組專案建立分支
進入Project頁面,在SSH位址列右邊點+,下拉選單中選擇New branch,建立新的分支。
寫入Group名稱Master – 為群組專案建立分支
進入Project頁面,在SSH位址列右邊點+,下拉選單中選擇New branch,建立新的分支。
分支的命名規則使用小駝峰式命名法,具體為開發
人員工號+所開發的功能/要解決的BUG名,工號首
字母小寫。命名中不要使用特殊字元,不要使用點。
分支命名:
f1322817Feature1
f1322817Bug051Master – 合併分支
管理員收到合併請求,審查程式碼並決定是否通過合併請求。點選Accept Merge Request通過,程式碼完成合並。附錄
Gitlab基本操作1.使用者註冊
按要求填寫完所有專案之後單擊Register提交。2.添加個人SSH KEY
在自己電腦上新開Git Bash視窗,用命令ssh-keygen.exe –t rsa生成SSH公鑰。在隱形資料夾.ssh下生成的id_rsa.pub
即為SSH公鑰檔案。2.添加個人SSH KEY
單擊使用者頭像,選擇Settings。2.添加個人SSH KEY
複製公鑰檔案內容,貼到Key的框框中,
點選Add Key.
複製過程中不能有換行。
一個公鑰(一臺主機)只能被一個用
戶使用。
單擊SSH Keys切換到SSH Keys配置頁面。複製剛才本地生成的公鑰檔案內容,貼到Key的框框中,點選Add Key新增。2.添加個人SSH KEY
至此,個人SSH KEY新增完成。3.新建project
單擊左邊選單欄,選擇Projects -> New Project3.新建project
寫入專案名稱,和專案描述,點選Create project。
Visibility Level根據實際需要選擇。3.新建project
Project建立完成之後,會產生一個以project.git命名的倉庫。剩下就是用git上傳下載程式碼,管理自己的專案。4.匯入專案
在本地主機並設定下git的使用者名稱和郵箱。
③檢視當前git配置
①設定使用者名稱
②設定郵箱4.匯入專案
如果專案在本地已經存在,需要匯入到gitlab,可以通過命令直接將專案匯入上去。
⑤提交
①進入專案資料夾
②初始化git倉庫
③新增遠端倉庫
④將專案檔案存進暫存區
⑥將更新推送到遠端git倉庫4.匯入專案
如果本地沒有專案倉庫,可以從gitlab上把專案克隆下來。
①克隆遠端倉庫到本地電腦
②進入專案資料夾
③檢視專案檔案目錄4.匯入專案
如果已經拉取過遠端倉庫,每次在本地編輯程式碼之前,應該從遠端獲取最新版本並merge到本地。5.分支(branch)操作
檢視分支:git branch
①檢視本地分支
②檢視遠端分支5.分支(branch)操作
建立本地分支並切換到分支:git branch [name] , git checkout [name]
①建立本地分支
②切換分支
③建立新分支並立即切換到新分支,
等同於上面兩條命令5.分支(branch)操作
刪除本地分支:git branch -d [name]。注意刪除分支時該分支不能存在還未合併的程式碼。
①刪除本地分支5.分支(branch)操作
建立遠端分支:(建立本地分支,並push到遠端)git push origin [name]
①將本地分支push到遠端5.分支(branch)操作
刪除遠端分支:git push origin :[name]
①刪除遠端分支
把本地某個分支提交到遠端倉庫,並作為遠端倉庫的分支,完整命令是:git push origin [name]:[name]。
刪除遠端分支的命令其實就是讓左邊的分支為空,其作用是刪除遠端的分支。但是該分支在本地還是會儲存的。5.分支(branch)操作
合併分支:git merge [name]
③提交修改
①切換到f1322817Feature2分支
②修改一個/多個檔案
④切換回master分支
⑤合併f1322817Feature2的修改到master分支6.子模組(submodule)操作
新增子模組:git submodule add [url][path]
①新增子模組6.子模組(submodule)操作
初始化子模組:git submodule init
①初始化子模組,只需要在首次拉取的時候執行一次。6.子模組(submodule)操作
更新子模組:git submodule update
①更新子模組,每次更新或切換分支後都需要執行一下。
submodule專案和它的父專案本質上是2個獨立的git倉庫。只是父專案儲存了它依賴的submodule專案的版本號而
已。如果同組的同事更新了submodule,然後更新了父專案中依賴的版本號,你需要在git pull之後,呼叫git
submodule update來更新submodule的資訊。6.子模組(submodule)操作
刪除子模組,有4個步驟
①git rm -cached 子模組
②編輯.gitmodules,將子模組相關配置節點刪除
③編輯.git/config,將子模組相關配置節點刪除
④手動刪除子模組殘留的目錄6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端。
①在ST專案資料夾下切換到自己的分支
②新增子模組
③檢視git狀態,此時ST專案資料夾下
多了兩個檔案/資料夾6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端倉庫。
④進入子模組資料夾
⑤切換到子模組下自己的分支
⑦檢視修改後的狀態
⑧提交修改
⑥修改子模組的檔案6.子模組(submodule)操作 - 子模組例項
場景:本地已有ST專案的倉庫,從遠端拉取COMMON作為ST專案的子模組,更新子模組並push到遠端倉庫。
⑨push修改到遠端自己的分支
之後的操作就是去Gitlab網頁上發起合併分支申請,等待管理員合併子模組的程式碼去master分支了。
特別注意:
在主專案(ST)和子模組(COMMON)之間切換目錄的時候,切換目錄的同時特別要注意切換自己的分支,否
則所有的操作都跟自己的使用者無關,最後的修改無效無法提交。6.子模組(submodule)操作
使用submodule注意事項:
1.對submodule做修改操作前,確保切換到正確的submodule項
目分支。因為進入submodule資料夾,分支狀態還保留在父項
目的分支下。對submodule做修改前,要立即切換到
submodule下你的本地分支。
2.git pull 之後,立即執行git status,如果發現submodule有修改,
立即執行git submodule update。
3.儘量不要使用git commit -a,git add存在的意義就是讓你對加
入快取區的檔案做第二次確認,而git commit -a相當於跳過了
這個確認過程。7.忽略的檔案/資料夾
無須納入Git管理的檔案(通常都是些自動生成的檔案,日誌檔案/臨時檔案等),可以通過建立一個名
為.gitignore的檔案來管理。Git官方文件(中文)
https://git-scm.com/book/zh/v2The End