10. 用户授权(grant user)
用户创建完成后,我们就需要对用户进行授权,从而使用户可以管理仓库,有两种方式,一 是 将用户加入到组,这样用户可以管理组内的仓库;二是 直接授权用户管理仓库。通常我们采用的方式是将用户加入到相应的组,并赋予不同的角色。Gitlab中用户的角色是系统定义好的,不能更改,这一点可能不符合我们正常的思维习惯。
下面将刚创建好的nqt用户添加到xmlgrg_test组,并赋予developer的权限
在管理员区域、点击创建的组,进入组管理界面
选择用户、给予权限,点击添加
添加成功
相应权限的官方文档说明:https://docs.gitlab.com/ee/user/permissions.html
11. 创建仓库create project
在gitlab中,创建project用来存储你的程序代码、作为一个问题的跟踪器、用于代码协作、用于持续集成中的构建、测试和部署等服务。
在管理员区域点击New project
填写新建仓库的信息
创建完成后页面有这2个提示、先不要管
仓库的管理页面左侧为仓库操作的相关菜单栏、右侧空仓库下显示如何在命令行连接该仓库、非空时显示仓库内容
Command line instructions Git global setup # git config --global user.name "Administrator" # git config --global user.email "admin@example.com" Create a new repository # git clone http://192.168.137.100/xmlgrg_test/xm.git # cd xm # touch README.md # git add README.md # git commit -m "add README" # git push -u origin master Existing folder # cd existing_folder # git init # git remote add origin http://192.168.137.100/xmlgrg_test/xm.git # git add . # git commit -m "Initial commit" # git push -u origin master Existing Git repository # cd existing_repo # git remote rename origin old-origin # git remote add origin http://192.168.137.100/xmlgrg_test/xm.git # git push -u origin --all # git push -u origin --tags
将仓库加入到组后,组内的成员就可以看到该仓库
使用nqt
用户登录。可以看到仓库xm
12. 配置ssh key
仓库是私有的,只有授权的用户才可以访问该仓库,那么只要客户端的用户与我们gitlab的用户绑定,客户端即可访问到gitlab上的仓库,建议使用ssh方式实现客户端与gitlab用户的绑定,具体配置如下:
在客户端生成ssh密钥对(注意 windows客户端下只能使用rsa加密方式)
在192.168.211.90 ,gitlab的服务器上
切换到运行gitlab的用户下,我这里直接使用的是服务器的root用户
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:TPquDQ/XGM5zBefa86ZCfKiGLh8aWHWbbVEdV06etUM root@localhost.localdomain The key's randomart image is: +---[RSA 2048]----+ | ...E*| | . o=+| | . o o . +o| | . = + = .| | . . S.o.o | | o + =++. | | . . +.Bo+.o | | .o.Ooo. o. | | .++o+ ..o. | +----[SHA256]-----+ # ll /root/.ssh/ 总用量 8 -rw------- 1 root root 1679 5月 2 17:07 id_rsa -rw-r--r-- 1 root root 408 5月 2 17:07 id_rsa.pub # cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDC9rQr5/sh7EJGMmScIJnyG+vWaXpjibA4i81ik14pdyeV80CYTmV7h38fYSKbsGI+MeQX8euvsqveGhNqJsNvTSNm/c5aoHudY6vNrvVkP1SM1gIsdgGb8I2uJeQBPi KftLnWashuO85vKiZ5hmv9THMW/Zn1NhiCuh3Ixj2PqEiUGxLLMb4NltJSoJOrOkKYZKd6FyLqXoLNJ9QN/m8uCHgS2vlTa7wvNIOZwAQnZ3Rx95dSusosUDHzfwBeMkCuNQpcP2kkQ2E6r+oi+zAlW/q6sUhHQzg0t1zat8IgEpJi3cu0TJRrdAnjNLlSL4Ue+RpmRrwoKs/gUgmrdIlZ root@localhost.localdomain
将该用户与gitlab的root用户绑定
点击gitlab用户的图标、找到setting
进入到用户的设置页面、点击左侧菜单栏的ssh keys
这个页面还可以设置用户的其它信息
Ssh的配置页面
此处只能添加公钥,注意、一个公钥在整个gitlab系统中只能添加一次,但是一个gitlab用户可以添加多个公钥
13. 推送本地客户端仓库到gitlab
yum install -y git git --version
设置本仓库的global级别信息
# git config --global user.name quntao # git config --global user.email xmlgrg@163.com # git config --list user.name=quntao user.email=xmlgrg@163.com
创建一个空仓库
# pwd /data/git_test # git init 初始化空的 Git 版本库于 /data/git_test/.git/ # ll -a 总用量 0 drwxr-xr-x 3 root root 18 5月 2 20:09 . drwxr-xr-x 3 root root 22 5月 2 20:09 .. drwxr-xr-x 7 root root 119 5月 2 20:09 .git
设置过滤文件
有了仓库,我们便可以在git_test文件夹下的工作区做文件的增删修改工作了,但很多时候,我们只在意开发过程中的源文件,并不需要管理自动产生的其它临时文件。这时候便需要一个过滤文件,在这个文件中设置过滤规则,让git能够自动过滤掉那些临时文件,这个文件便是.gitignore文件。
在仓库目录下创建.gitignore文件
# pwd /data/git_test # touch .gitignore # vim .gitignore # cat .gitignore test.txt /test/ *.txt
test.txt
//过滤test.txt文件/test/
//过滤test目录*.txt
//过滤所有以.txt结尾的文件
常用的通配规则:
- 以斜杠“
/
”开头表示目录 - 以星号“
*
”通配说个字符 - 以问号“
?
”通配单个字符 - 以方括号”
[]
“包含单个字符的匹配列表 - 以叹号“
!
”表示不忽略(跟踪)匹配到的文件或目录
# touch a # touch b # touch c # git add a # git add b # git add c # git commit -m "commit a" //"commit a" 提交版本的描述信息 [master(根提交) 4141cd7] commit a 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 a create mode 100644 b create mode 100644 c
推送本地客户端仓库到gitlab中
# pwd /data/git_test # git remote add gitlab git@192.168.137.100:xmlgrg_test/xm.git
您在 /var/spool/mail/root
中有新邮件
# git remote gitlab # ll -a 总用量 4 drwxr-xr-x 3 root root 63 5月 2 20:19 . drwxr-xr-x 3 root root 22 5月 2 20:09 .. -rw-r--r-- 1 root root 0 5月 2 20:19 a -rw-r--r-- 1 root root 0 5月 2 20:19 b -rw-r--r-- 1 root root 0 5月 2 20:19 c drwxr-xr-x 8 root root 166 5月 2 20:25 .git -rw-r--r-- 1 root root 22 5月 2 20:14 .gitignore # git push -u gitlab master The authenticity of host '192.168.137.100 (192.168.137.100)' can't be established. ECDSA key fingerprint is SHA256:zUU81Kb1Q5uS1ewufeZ1qLyErPI0uOyIhEmOabssXoE. ECDSA key fingerprint is MD5:1a:bc:a7:24:e7:f6:ce:4e:d3:df:56:ac:4a:e2:a5:3c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.137.100' (ECDSA) to the list of known hosts. Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 203 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.137.100:xmlgrg_test/xm.git * [new branch] master -> master
分支 master 设置为跟踪来自 gitlab 的远程分支 master。
提示推送成功,我们在gitlab上的xm仓库上可以看到推送上来的内容