GitLab使用[管理员]
一般这些配置是需要公司的管理员去配置的,初级开发人员是没有这个权限的。
修改显示主题为中文
在主页面左上角用户头像上点击,选择Edit profile
,效果如下图:
选择Preferences
菜单,滚动到下面的Localization
组的Language
,效果如下图:
设置语言为Chinese,Simplified-简体中文(98%translated)
,效果如下图:
点击Save changes
保存修改,效果如下图:
修改语言为中文后,需要刷新网页才能看到页面全部修改为中文了,效果如下图:
取消用户自动注册功能
点击管理中心
-> 仪表盘
-> 己启用注册功能
去掉勾选,然后拉到下面点击保存更改
,效果如下图:
创建用户
创建用户cxypa01,点击仪表盘
-> 新建用户
,效果如下图:
填写用户账号信息,点击创建用户
,效果如下图:
创建后点击编辑
,效果如下图:
添加用户的密码,效果如下图:
创建组
群组
可有理解为企业中的开发小组
,每个小组可能负责固定的几个项目。
点击仪表盘
-> 新建群组
,效果如下图:
输入相关信息,点击创建群组
,效果如下图:
将用户添加到组中
点击群组
,点击群组名testGroup
,进入之前创建的组中,效果如下图:
点击管理权限
,效果如下图:
点击邀请成员
,效果如下图:
在邀请成员对话框中输入相关信息,效果如下图:
添加群组成员后,效果如下图:
给用户组创建项目
点击testGroup
群组,点击右侧创建新项目
,效果如下图:
点击创建空白项目
,效果如下图:
在创建空白项目
中输入项目名称,不要勾选使用自述文件初始化仓库
,效果如下图:
完成项目创建,效果如下图:
SSH 协议
GitLab 可以通过 HTTP 的方式可以上传和下载代码,这种方式可以用户的账号和密码。此方式在这里就不过多介绍了,下面将介绍使用 SSH 协议来操作 GitLab 上的项目。
SSH协议概述
SSH 为 Secure Shell (安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
基于密匙的安全验证
使用 SSH 协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到 SSH 服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。
SSH密钥生成
密钥生成的方式有很多种,常见的JDK的工具或者是GitBash等。本教程使用GitBash。
- 鼠标右键打开GitBash客户端,效果如下图:
- 在GitBash执行命令,生命公钥和私钥,效果如下图:
ssh-keygen -t rsa
执行命令完成后,在window本地用户.ssh目录(C:\Users\用户名\.ssh中),生成如下名称的公钥和私钥:
SSH密钥配置
密钥生成后需要在GitLab上配置密钥本地才可以顺利访问。
SSH密钥配置操作步骤如下图:
设置成功后, 我们就可以使用SSH的形式上传和下载代码了。
在windows中使用Git Bash
命令行测试是否能够使用ssh连接服务器,命令如下:
ssh -T Git@192.168.100.132 -p 1024
效果:
$ ssh -T Git@192.168.100.132 -p 1024 The authenticity of host '[192.168.100.132]:1024 ([192.168.100.132]:1024)' can't be established. ED25519 key fingerprint is SHA256:yBstIZL6RmVX65G9yUcBjYQET8GuIq0z3gpf2PmhPhU. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[192.168.100.132]:1024' (ED25519) to the list of known hosts. Welcome to GitLab, @root!
看到Welcome to GitLab, @root!
说明成功了!
上传项目至GitLab[管理员]
使用 IDEA 中把项目上传到 GitLab 中,无需其他的插件。这种方式不仅可以向 GitLab 中上传,也可以向 Gitee 和 Github 中上传。
- 点击 VCS,创建本地仓库
Create Git Repository
- 选择项目的根目录,作为 Git 本地仓库的根资源库。
- 向项目的根路径下添加
.gitignore
文件忽略不要Git仓库管理的文件
- 选择要提交到本地仓库中的文件
- 将项目上传到远程仓库 GitLab 中
选中项目的根目录,在 Git 菜单栏中选择 Push
- 点击
Define remote
在弹出窗口中的 URL 里填写之前的项目地址
注意:保证远程仓库是一个新的空仓库,否则提交失败。
- 点击 Push 进行提交
- 检查 Git 中是否已经上传到远端仓库地址中
- 远端仓库中上传后项目的内容
以上将自己的项目上传到了 GitLab 组中的项目中,只有本组的人员才可以看到此项目中的内容。
新建和上传分支[管理员]
新建分支
上传分支
模拟新员工到公司[新员工]
模拟新员工到公司,在GitLab上删除之前的SSH秘钥,退出的root用户。
使用新建的用户登录GitLab[开发人员]
第一次登录后会提示修改密码,效果如下图:
SSH密钥生成[新员工]
在Git bash
执行下面命令,生成公钥和私钥。
ssh-keygen -t rsa
SSH密钥配置[新员工]
生成密钥后,需要在 GitLab 上配置密钥,本地才可以顺利访问 GitLab。操作如下图:
使用IDEA从GitLab拉取代码[新员工]
在IDEA中关闭项目,回到欢迎界面,选择Get from VCS
,效果如下图:
到GitLab上复制项目的地址,
输入GitLab对应项目的地址,选择本地保存项目的路径,点击Clone
,效果如下图:
点击Trust Project
,效果如下图:
可以看到代码拉取到本地了,效果如下图:
如果使用HTTP协议拉取代码,第一次拉取代码会显示需要输出账号和密码,输入GitLab的账号和密码。
把远程分支拉到本地[新员工]
刚从远程仓库把代码拉取到本地,本地只有一个master分支。需要把远程分支拉取到本地,效果如下图:
点击远程分支名
,再选择Checkout
,就可以把远程分支拉取到本地,效果如下图:
使用IDEA创建新分支开发[新员工]
假设张三
接到了开发订单功能
的任务,张三需要创建一个新分支zhangsan_order
分支开发订单功能,这样不会影响其他的人开发。当订单功能开发完成后就需要合并到dev
分支。
张三创建一个新分支zhangsan_order
分支开发订单功能,操作如下图:
在zhangsan_order
分支提交代码,操作如下图:
张三把订单功能zhangsan_order
分支合并到dev
分支,操作如下图:
zhangsan_order
分支合并到dev
分支后的效果:
推送dev
分支到远程仓库。
在远程仓库的dev
分支可以看到订单功能的代码。
Git开发常见问题
commit前回滚[新员工必会]
假设用户添加了一行代码,但是还没有提交到本地仓库。
在commit窗口中右键选择要回滚的文件,点击Git
,再点击Rollback
,操作如下图:
回滚后,多添加的但是未提交的代码没有了。
commit后回滚[新员工必会]
commit后回滚有两种方式:Undo Commmit
和Revert Commit
。
Undo Commmit
:撤销上次提交,保留修改的内容到新的changelist中,Git log中无任何提交信息。
Revert Commit
:直接回滚到上个版本,不保留修改的内容,在Git log中会留下上次commit和本次revert的信息。
Undo Commmit
操作
在Git log的提交日志上右键,选择Undo Commit
,操作如下图:
点击OK
Undo Commmit
操作后,在Git log中就没有了这次提交。
但是代码还是存在的,需要Rollback
回滚代码,操作如下图:
代码还原了,Git log也没有了,效果如下图:
Revert Commmit
操作
先提交测试代码,效果如下图:
在Git log提交日志上右键,选择Revert Commit
,操作如下图:
提交的代码撤回了,但是Git log提交日志中多了Revert"commit后回滚测试2!提交"
,效果如下图:
push后回滚[新员工必会]
假设用户不小心push到了服务器,效果如下图:
在Git log提交日志中,选择要撤回的到的提交日志,右键,点击Reset Current Branch to Here
在弹出窗中选择soft或者hard。
区别:hard彻底回滚,不保留修改的内容。soft回滚到commit前的状态,修改的内容被保留在changelist中。
这里选择Soft
,效果如下图:
修改完成之后使用Force Push
强制推送到远程仓库,操作如下图:
到远程仓库查看,可以看到,之前的提交被覆盖掉了。
如果IDEA的Force Push
按钮不能点击,则使用Git命令强行覆盖远程分支Git push origin 分支名 --force
,效果如下:
Git push origin master --force
冲突解决[新员工必会]
两个人在同一个类的同一行添加代码并先后提交到远程仓库。
产生了冲突,解决冲突,操作如下图:
解决冲突后的效果: