在安裝完畢gitlab後,登陸到頁面後,咱們能夠看到是沒有任何項目,並且只有一個用戶。在使用的時候,須要建立項目,並且會有對應的用戶在項目中。下面練習這個操做html
- 新建用戶組node
一、點擊右上角的扳手按鈕linux
二、在彈出的對話框中選擇 new groupgit
三、Private:只有受權的用戶才能夠看到shell
Internal:只要是登陸上來的用戶就能夠看到windows
Public:任何組和項目均可以看到bash
- 組受權
app
一、能夠看到建立完組之後,能夠給組內添加成員。下面建立幾個用戶ssh
tips:一個組能夠有多個項目ide
- 用戶建立
一、點擊右上角的扳手按鈕
二、在彈出的對話框中選擇 new user,下面建立了一個管理用戶GYH,兩個普通用戶YH01和YH02
給用戶添加到受權組中,並修改權限
如圖,這樣咱們就把GYH用戶添加到Group1組中,並給予了master權限
- 建立項目
一、點擊右上角的扳手按鈕
二、在彈出的對話框中選擇 new project
三、選擇項目擁有者
四、建立完項目,要受權項目
當咱們建立完畢後,會有一個提示信息,以下,告知咱們須要配置了ssh才能使用ssh協議來push或者pull這個項目
You won't be able to pull or push project code via SSH until you add an SSH key to your profile
下面咱們就要對這個項目作權限處理,讓它能夠經過ssh來pull或者push動做
點擊到上面的位置後,咱們須要登陸到須要受權鏈接到gitlab的設備上面。來複制密鑰到gitlab上面。
下面以Linux設備ip爲56.11爲例,登陸到此設備上
經過ssh-keygen 一路回車來生成密鑰,而後拷貝pul公鑰到gitlab上去
點擊Addkey按鈕後,就添加成功!!
這裏須要注意到是,gitlab上面登陸的帳號是YH01 是在這個帳號下添加到SSH key
若是不添加上面的ssh的話,你clone的時候會提示錯誤:錯誤提示以下圖
給項目添加受權用戶
添加完畢後,這個項目擁有了4個用戶,其中兩個是組裏面繼承過來的,另外兩個是這個項目的用戶,如圖
當完成上面的設置後,使用YH01帳號登陸後,在登陸界面就能看到他所擁有的項目了
這個時候就能夠從客戶經過git glone來下載項目了
[root@linux-node1 ~]# git clone git@192.168.56.11:Group1/app1.git Cloning into 'app1'... The authenticity of host '192.168.56.11 (192.168.56.11)' can't be established. ECDSA key fingerprint is 28:3e:e9:97:c9:ff:33:16:41:23:0a:14:30:7c:5c:7f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.11' (ECDSA) to the list of known hosts. warning: You appear to have cloned an empty repository. Checking connectivity... done. [root@linux-node1 ~]# ll total 277436 -rw-------. 1 root root 990 Dec 26 18:21 anaconda-ks.cfg drwxr-xr-x 3 root root 17 May 14 22:30 app1
這裏因爲app1項目是一個空的目錄,下面咱們在這個目錄上面新建一個文件readme
而後使用git pull來測試拉取
[root@linux-node1 app1]# git pull remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From 192.168.56.11:Group1/app1 * [new branch] master -> origin/master [root@linux-node1 app1]# ll total 4 -rw-r--r-- 1 root root 47 May 14 22:37 readme [root@linux-node1 app1]# cat readme readme建立一個牀主主峯之 #這裏能夠看到,把master上面的readme文件拉取了下來了
二 windows客戶端創建ssh免密鑰登陸
一、安裝工具
Git-2.7.2-32-bit_setup.1457942412.exe
二、在一個目錄裏面選擇右鍵,選擇「Git Bash Here」,會彈出一個shell窗口,這個窗口裏面執行和Linux同樣的ssh密鑰生成命令。結果也會生成一個密鑰
Tony@Tony-PC MINGW32 ~/.ssh $ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxfaZna8H+91hB4+GYPI2RcOzZhDleHx8sK8po5bq5wwk+tgRUSGQiLg8mA+HAxSIueylsKA0sfBCajP9k2hJ05vaOxr+UOqZ0yEytYqlQs0WIgX+VOAwkJDwGYgeZ7jZ3N0knem4GK8NRSWeoSwXseoZs9ddeFk3YVAaVykLDDngZ0YKsBkP7rjPn0JnFau8Me75cfIjuTnMVYPGY5YPJnN9MULjQvZB9mJ34E05a/4cAXZBSVKtumasBnIjTIbRFNVxcRjDohNdak1kZgdmOwMSyeCX+ADcV5vwgGZNxxWkRpOFV+W9vI/NqIpGktj7HD12XXtzxi8nnuozGe0SL Tony@Tony-PC Tony@Tony-PC MINGW32 ~/.ssh
三、把windows上面這個加到YH02用戶上面
四、在gitlab上用YH02登陸上去,在profiles setting設置裏面添加SSH Key添加上去,
五、從windows客戶端上pull代碼下來。
Tony@Tony-PC MINGW32 ~/.ssh $ git clone git@192.168.56.11:Group1/app1.git Cloning into 'app1'... The authenticity of host '192.168.56.11 (192.168.56.11)' can't be established. ECDSA key fingerprint is SHA256:l8F7OnGgtB8t1VEWnooak1oCP6UsZ3GJx1MPhssMv04. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.11' (ECDSA) to the list of known hosts. remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. Checking connectivity... done. Tony@Tony-PC MINGW32 ~/.ssh $ ll total 6 drwxr-xr-x 1 Tony 197121 0 五月 15 14:36 app1/ -rw-r--r-- 1 Tony 197121 1675 五月 14 11:34 id_rsa -rw-r--r-- 1 Tony 197121 394 五月 14 11:34 id_rsa.pub -rw-r--r-- 1 Tony 197121 175 五月 15 14:36 known_hosts Tony@Tony-PC MINGW32 ~/.ssh $ cd app1/ Tony@Tony-PC MINGW32 ~/.ssh/app1 (master) $ ll total 1 -rw-r--r-- 1 Tony 197121 49 五月 15 14:36 readme Tony@Tony-PC MINGW32 ~/.ssh/app1 (master) $ cat readme readme建立一個牀主主峯之 master brach Tony@Tony-PC MINGW32 ~/.ssh/app1 (master) $
Deploy Key
每一個項目都有個deploy key,項目部署公鑰(Deploy Key)容許經過SSH協議以只讀的方式訪問項目,不須要輸入密碼,並且數據是使用你上傳的公鑰加密傳輸的。與HTTPS協議相比,SSH協議的數據傳輸效率要更高和穩定些,支持超大項目數據的傳輸。使用depoly key 後發現只能pull 不能push
這個通常是給jenkins使用的。
三 gitlab開發計劃實施
假設如今已經有了一個開發計劃,怎麼作gitlab上實施這個開發計劃那????
這裏咱們使用管理帳號GYH來當項目經理,登陸到gitlab上面
在左面的菜單中選擇Milestones里程碑,--》new milestones
新建新的issue來分配任務
依次建立4個issue
當咱們使用YH01或者YH02登陸到gitlab時候就能看到分配給本身的任務
開發者開始開發的流程
一、首先要建立一個新的分支
(1)能夠經過命令建立分支
[root@linux-node1 app1]# git checkout -b shouye Switched to a new branch 'shouye' [root@linux-node1 app1]# git status On branch shouye nothing to commit, working directory clean
(2)在頁面直接建立分支,而且會以當前issue的ID來命名分支
二、在分支上開發程序,並推送到分支上
[root@linux-node1 app1]# echo "shou ye wen jian" >index.html [root@linux-node1 app1]# git add . [root@linux-node1 app1]# git commit -m "shouye" [shouye 1f9cf77] shouye 1 file changed, 1 insertion(+) create mode 100644 index.html [root@linux-node1 app1]# git log commit 1f9cf77118cc8c8ec704bc1458db128fc25f39d2 Author: kesungang <605937099@qq.com> Date: Sun May 14 23:25:17 2017 +0800 shouye commit 34b7e533c414b0f27ab2d1e209e145bc5d0afd1b Author: YH01 <yh01@126.com> Date: Sun May 14 22:35:42 2017 +0800 first commit for master [root@linux-node1 app1]# git push origin shouye Counting objects: 3, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 284 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.56.11:Group1/app1.git * [new branch] shouye -> shouye
gitlab上在用戶的項目裏面能夠查看到分支,而且點擊分支,能夠看到你的commit記錄
三、開發完畢,分支請求合併到master分支上去
(1) 、能夠從頁面上的shouye分支,點擊右邊的Merge Request
(2)GYH項目經理登陸到gitlab上,能夠從有上面的小鈴鐺,提示有任務,若是檢查沒有問題,接受合併請求
(3)測試正常合併的,能夠關閉分支了
(4)分支更新(其餘人就能夠從master上面拉下最新內容了)
[root@linux-node1 app1]# git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'. [root@linux-node1 app1]# ll total 4 -rw-r--r-- 1 root root 47 May 14 22:37 readme [root@linux-node1 app1]# git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (1/1), done. From 192.168.56.11:Group1/app1 34b7e53..1f84445 master -> origin/master * [new branch] 1- -> origin/1- Updating 34b7e53..1f84445 Fast-forward index.html | 1 + 1 file changed, 1 insertion(+) create mode 100644 index.html [root@linux-node1 app1]# ll total 8 -rw-r--r-- 1 root root 17 May 15 00:13 index.html -rw-r--r-- 1 root root 47 May 14 22:37 readme
另一種commit 自動關閉分支任務
-rw-r--r-- 1 root root 47 May 14 22:37 readme [root@linux-node1 app1]# [root@linux-node1 app1]# git checkout -b news Switched to a new branch 'news' [root@linux-node1 app1]# git status On branch news nothing to commit, working directory clean [root@linux-node1 app1]# echo "xinwen" >news.html [root@linux-node1 app1]# ll total 12 -rw-r--r-- 1 root root 17 May 15 00:13 index.html -rw-r--r-- 1 root root 7 May 15 00:16 news.html -rw-r--r-- 1 root root 47 May 14 22:37 readme [root@linux-node1 app1]# git add . [root@linux-node1 app1]# git status On branch news Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: news.html [root@linux-node1 app1]# git commit -m "close #2"#使用#2格式來提交 [news 9def595] close #2 1 file changed, 1 insertion(+) create mode 100644 news.html [root@linux-node1 app1]# git status On branch news nothing to commit, working directory clean [root@linux-node1 app1]# git push origin news Counting objects: 3, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 303 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.56.11:Group1/app1.git * [new branch] news -> news