Gitlab的安装
安装本身并不复杂,但是gitlab对内存的要求比较高,建议4g以上,vm的内存上限为3g,也可以使用
下载地址
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
安装命令
rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
修改端口
https://blog.csdn.net/qq_38270106/article/details/100080665
发现修改了两个端口 nginx和unicorn
简单的理解nginx是前端,就是访问gitlab的端口, unicorn作为后端的容器
Gitlab使用
创建用户
-
创建用户
image.png -
为用户赋予权限,创建用户后会发送邮件,点开链接可以重新设置密码,管理用户也可以在
用户修改地方设置密码,普通用户可以创建group和project
image.png
创建用户组
1.创建GROUP,添加用户
image.png
image.png
image.png
每个角色意义
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
Group的设置,group添加用户之后,共享Group下的所有项目
image.png
image.png
创建项目
image.png
组和项目的删除
组删除
image.png
项目删除
image.png
image.png
Gitlab整合idea
-
整合idea首先要做的就是gitlab要忽略的文件
image.png -
如果无意间add文件的话
Revert方式
image.png
Reset方式
image.png
这里要选择mixed方式,可以取消add还有sort和hard方式后续讲到,hard方式慎用
Reset方式不会单独选择某个文件,会整体的撤销
使用命令取消add
这里要取消test1文件的add,要注意目录层级
git rm --cache test1 注意目录层级 -
如果无意间commit文件了,该如何取消
image.png
如何撤销commit
这里需要使用的reset
image.png
针对reset有三种状态
mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
两次commit,取消最近一次的commit
image.png
因为选择的是mixed,如果是hard的话,这里的内容就是测试1了,而且不会弹出合并页面,暴力回退,也就是选择hard之后你编写的代码,如果还没有push到远程仓库的时候,新改的代码就没有了,所以要谨慎使用.
image.png
这就是取消commit的操作,在实际操作的时候也不需要取消commit,因为如果多次commit的话,真正push到远程仓库的时候,是最新的代码. -
多次commit,是以最后一次修改为主,如果一个文件多次commit,最终push到远程仓库的代码是以最后一次为主,所以3中提到取消commit其实使用的并不多
image.png -
如果误操作,删除了文件或者提交了很多没有用的文件
那如何把误提交的文件从gitlab上删除呢,或者误删除的文件找回来
两种办法:
- 先将本地的文件备份一下,并删除掉从新commit+push即可,这种是比较简单的方式,
如果是不小心删除了本地文件,并push到gitlab上,把文件在本地找到,并commit+push即可 -
另一种使用reset的方式,这种方式比较复杂
image.png
image.png
这一次提交,修改test1文件和添加了test2文件,突然发现test2文件不应该被提交,利用reset方式删除test2文件
image.png
操作reset
image.png
只能选择hard模式,soft和mixed不会把test2文件删除掉
但是这里要注意 test1 会从测试8改为测试7,这里有一个问题就是当reset的版本低于远程的mater分支版本的时候,push不上去,这里可以使用
git push master -force origin master 强制push -
创建分支
创建本地分支
image.png
当push的时候会把本地分支上传到gitlab
当分支切换的时候,会把当先分支的文件同步到切换的分支上,包含add 但是没有commit等信息,
如果删除了远程分支的时候,如何找回分支
image.png
上面的操作会删除远程分支
image.png
image.png
image.png
image.png
重新创建好的分支
2.分支切换
image.png
分支的切换有个问题就是当前分支的修改但是没有commit的代码会自动同步到新分支上,已经commit的内容不会自动同步,需要手都同步.
image.png
image.png
这个时候切换master分支上
image.png
如果dev分支修改了文件,因为没有修改完不想commit,此时需要切换分支,不想把已经修改但是没有commit的代码同步到master分支上,我们就可以使用stash命令
image.png
image.png
image.png
dev创建stash之后,恢复到commit状态,这样就可以切换master分支了,
当切换回来到dev时,可以使用unstash,将暂存释放出来
image.png
image.png -
分支的合并
分支的合并分两种一种是cherr-pick一种是merge into current
image.png
image.png
Cherry pick和merge into current 区别 Cherry pick可以单独的合并某一个commit, merge into current是两个分支整体合并
网友评论