Gitlab 仓库搭建(详细版)

目录

前言

一、gitlab 介绍

二、git和svn 的区别

1、 集中式vs分布式

2、 版本库与工作区

3. 全局版本号和全球版本号

4、部分检出和全局检出

5、更新和提交

三、Git和svn的优缺点比较

1、SVN优缺点

2、Git优缺点

四、git、gitlab、GitHub的简单区别

五、Gitlab 搭建

1、gitlab 安装

方法一、设置gitlab的yum源(使用清华镜像源安装GitLab)

方法二、脚本安装gitlab

 方法三、清华开源软件rpm下载

六、gitlab安装目录 

七、GitLab常用命令汇总

八、Gitlab访问测试

1、Gitlab登录

 2、配置默认访问密码

3、想要登录自己创建的用户?

九、Gitlab 图形化界面操作 

1、Gitlab关闭自动注册

2、Gitlab登录免密认证 

3、Gitlab创建项目 

4、使用管理员创建用户 

5、Gitlab 添加邮箱设置

5.1、开启smtp功能

 5.2、验证

6、修改登录欢迎页面 

十、Gitlab命令行操作 

​编辑1、命令行新建分支 

2、上传代码到仓库

3、Git 命令行常用指令的使用 

3.1、提交与修改操作

十一、项目创建(测试)

1、GitLab权限

1.1、访问权限

1.2、GitLab分支角色管理

1.3、工程权限

1.4、组权限

2、设置用户权限 

3、数据流向图

十二、Gitlab 数据备份 

 1、Gitlab 创建备份

1.1、手动备份

2、更改Gitlab备份目录

3、Gitlab自动备份

定时自动备份

3.1、方法一、输入: crontab -e 然后添加相应的任务

3.2、脚本执行gitlab 备份 

十三、Gitlab-CI/CD 

CICD是什么?

持续集成的好处是什么?

持续交付的好处是什么?

持续部署的好处是什么?

十四、总结


前言

公司代码的管理不统一,一部分人用SVN,一部分人用Git,对于习惯了使用Linux或者Mac命令行的人来说,Git的操作更方便和快捷,和小伙伴商量了一下把整个代码管理工具切换成了Git,GitHub如果不是开源项目的话是需要付费使用,所以选择使用GitLab。

Gitlab 仓库搭建(详细版)_第1张图片

一、gitlab 介绍

       Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。Gitlab有乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写,现今并在国内外大中型互联网公司广泛使用。gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。

二、git和svn 的区别

Git: 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

下图就是分布式版本控制工具管理方式:

Gitlab 仓库搭建(详细版)_第2张图片

Git:是分布式版本控制系统,它没有中央服务器,每个人的电脑就是一个完整的版本库,这样工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

SVN: 是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。

下图就是标准的集中式版本控制工具管理方式:

Gitlab 仓库搭建(详细版)_第3张图片

但是相较于其优点而言,集中式版本控制工具缺点很明显:

服务器单点故障

容错性差

Git 的内容完整性要优于svn:

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态,SVN更适用于项目管理, Git更适用于代码管理。

1 集中式vs分布式

Subversion(svn)属于集中式的版本控制系统

Git属于分布式的版本控制系统

2、 版本库与工作区

SVN的版本库和工作区是分离的

Git 的版本库和工作区如影随形

3. 全局版本号和全球版本号

SVN的全局版本号和CVS的每个文件都独立维护一套版本号相比,是一个非常大的进步。在看似简单的全局版本号的背后,是Subversion提供对于事物处理的支持,每一个事物处理(即一次提交)都具有整个版本库全局唯一的版本号。

Git的版本号则更进一步,版本号是全球唯一的。Git 对于每一次提交,通过对文件的内容或目录的结构计算出一个SHA-1 哈希值,得到一个40位的十六进制字符串,Git将此字符串作为版本号 

4、部分检出和全局检出

Subversion可以将整个库检出到工作区,也可以将某个目录检出到工作区。对于要使用一个庞大、臃肿的版本库的用户来说,部分检出是非常方便和实际的。
Git只能全部检出,不支持按照目录进行的部分检出。

5、更新和提交

在SVN中,因为只有一个中心仓库,所以所谓的远程更新,也就是svn update ,通过此命令来使工作区和版本库保持同步。如果不能连接到服务器上,基本上不可以工作。

对于git来说,别人的改动是存在于远程仓库上的,所以git checkout命令尽管在某些功能上和svn中的update类似(例如取仓库特定版本的内容),但是在远程更新这一点上,还是不同的,不属于git checkout的功能涵盖范围。 Git使用git fetch和git pull来完成远程更新任务,fetch操作只是将远程数据库的object拷贝到本地,然后更新remotes head的refs,git pull 的操作则是在git fetch的基础上对当前分支外加merge操作。可离线工作。

三、Git和svn的优缺点比较

1、SVN优缺点

优点:

1、 管理方便,逻辑明确,符合一般人思维习惯。

2、 易于管理,集中式服务器更能保证安全性。

3、 代码一致性非常高。

4、 适合开发人数不多的项目开发。

缺点:

1、 服务器压力太大,数据库容量暴增。

2、 如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。

3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。

2、Git优缺点

优点: 

1、适合分布式开发,强调个体。

2、公共服务器压力和数据量都不会太大。

3、速度快、灵活。

4、任意两个开发者之间可以很容易的解决冲突。

5、离线工作。

缺点:

1、学习周期相对而言比较长。

2、不符合常规思维。

3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

四、git、gitlab、GitHub的简单区别

git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面

gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发

github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库

其中:

Gitlab和GitHub的区别

相同点:二者都是基于web的Git仓库,在很大程度上Gitlab是仿照GitHub来做的;
它们都提供了分享开源项目的平台,为开发团队提供了存储、分享、发布
和合作开发项目的中心化云存储的场所。

不同点:GitHub如果要使用私有仓库,是需要付费的。Gitlab可以在上面创建私人的免费仓库。

Gitlab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:允许免费设置仓库权限;允许用户选择分享一个project的部分代码;允许用户设置project的获取权限,进一步的提升安全性;可以设置获取到团队整体的改进进度;通过innersourceing让不在权限范围内的人访问不到该资源。从代码私有性方面来看有时公司并不希望员工获取到全部的代码,这个时候Gitlab无疑是更好的选择。但是对于开源项目而言,GitHub依然是代码托管的首选。

五、Gitlab 搭建

1、gitlab 安装

方法一、设置gitlab的yum源(使用清华镜像源安装GitLab)

gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。

在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:
 
cd /etc/yum.repos.d/
vim gitlab-ce.repo
 
[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
 
yum clean all && yum makecache

Gitlab 仓库搭建(详细版)_第4张图片

Gitlab 仓库搭建(详细版)_第5张图片

安装 GitLab

# 直接安装最新版
yum install -y gitlab-ce 

Gitlab 仓库搭建(详细版)_第6张图片

下图表示gitlab安装成功

Gitlab 仓库搭建(详细版)_第7张图片

# 如果要安装指定的版本,在后面填上版本号即可
yum install -y  gitlab-ce-×××
# 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证
yum install gitlab-ce -y --nogpgcheck 

方法二、脚本安装gitlab

如果执行脚本出现坏的解释器:脚本文件保存时使用了DOS格式,用DOS2UNIX转为UNIX格式,也可以用vim打开,用:set ff=unix转换。

#!/bin/bash
  #安装依赖
systemctl stop firewalld
setenforce 0
a=`ifconfig ens33 |grep inet |awk 'NR==1{print $2}'`
  yum install curl wget policycoreutils policycoreutils-python openssh-server openssh-clients postfix -y >/dev/null
  systemctl enable sshd
  systemctl start sshd
  sed -i 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf
 
  #正式安装gitlab
  curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash > /dev/null
  sed -i "s/baseurl=https:\/\/packages.gitlab.com\/gitlab\/gitlab-ce\/el\/7\/\$basearch/baseurl=https:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-ce\/yum\/el\$releasever\//g" /etc/yum.repos.d/gitlab_gitlab-ce.repo
  yum makecache &>/dev/null
  yum install gitlab-ce -y
  #已经安装完成
 
 
  #验证是否安装成功
  right=$(yum list installed | grep gitlab-ce)
  gitlab='gitlab-ce'
    if [[ ${right} =~ "${gitlab}" ]];then
      echo "gitlab-ce已经安装成功啦!"
    else
      echo "gitlab-ce没有安装成功,请重新检查!"
      exit
    fi
sed -i '32s/gitlab.example.com/'$a':9099/' /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure > /dev/null
echo "此时访问本地IP:9099 就可以显示gitlab 的页面了!"

 方法三、清华开源软件rpm下载

 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror   网站地址

Gitlab 仓库搭建(详细版)_第8张图片

安装依赖
yum install -y curl policycoreutils openssh-server openssh-clients

Gitlab 仓库搭建(详细版)_第9张图片

#启动ssh服务&设置为开机启动
systemctl enable sshd
systemctl start sshd

安装Postfix
Postfix是一个邮件服务器,GitLab发送邮件需要用到
#安装postfix
yum install -y postfix
 
#启动postfix并设置为开机启动
systemctl enable postfix
systemctl start postfix

Gitlab 仓库搭建(详细版)_第10张图片

开放ssh以及http服务(80端口)
#开放ssh、http服务
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
 
 说明允许ssh服务通过成功

 说明80端口通过成功

#重载防火墙规则
firewall-cmd --reload

或者

直接关闭防火墙以及开机自关闭

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

 安装gitlab,安装完gitlab需要修改配置文件,并加载

vim /etc/gitlab/gitlab.rb     进入配置文件

#找到下面一行,修改ip

修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效即可启动Gitlab。注意,启动过程较长,需要耐心等待。

我们查看一下Gitlab的状态,执行命令:
Gitlab 仓库搭建(详细版)_第11张图片

六、gitlab安装目录 

 以下是gitlab常用的默认安装目录

gitlab组件日志路径:/var/log/gitlab
 
gitlab配置路径:/etc/gitlab/  路径下有gitlab.rb配置文件
 
应用代码和组件依赖程序:/opt/gitlab
 
各个组件存储路径: /var/opt/gitlab/
 
仓库默认存储路径   /var/opt/gitlab/git-data/repositories
 
版本文件备份路径:/var/opt/gitlab/backups/
 
nginx安装路径:/var/opt/gitlab/nginx/
 
redis安装路径:/var/opt/gitlab/redis

七、GitLab常用命令汇总

#查看服务状态
gitlab-ctl status
使用控制台实时查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志
gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#启动关闭gitlab    
gitlab-ctl start      
gitlab-ctl stop                                #停止            
gitlab-ctl status                              #查看状态
gitlab-ctl restart                             #重启
gitlab-ctl reconfigure               #更新配置文件
gitlab-ctl help                                #帮助
gitlab-rake gitlab:check SANITIZE=true --trace    检查gitlab
#gitlab 默认的日志文件存放在/var/log/gitlab 目录下
gitlab-ctl tail                                #查看所有日志
#禁止 Gitlab 开机自启动
systemctl disable gitlab-runsvdir.service 
#启用 Gitlab 开机自启动
systemctl enable gitlab-runsvdir.service

八、Gitlab访问测试

1、Gitlab登录

打开浏览器输入gitlab服务器地址,注册用户,如下图

Gitlab 仓库搭建(详细版)_第12张图片

注册用户

Gitlab 仓库搭建(详细版)_第13张图片

例:

Gitlab 仓库搭建(详细版)_第14张图片

完成后想登录http://192.168.111.50:9091 需要账号和密码登录,注册一个后登录报错误,需要管理员账号初始化。(密码最少的是8位数字)

Gitlab 仓库搭建(详细版)_第15张图片

 2、配置默认访问密码

 切换到命令运行的目录 cd /opt/gitlab/bin/
  执行如下命令:gitlab-rails console -e production  进行初始化密码

Gitlab 仓库搭建(详细版)_第16张图片

在irb(main):001:0> 后面通过 u=User.where(id:1).first 来查找与切换账号(User.all 可以查看所有用户)
gitlab-rails console -e production
u=User.where(id:1).first
u.password='12345678'
u.password_confirmation='12345678'
u.save!
exit
 
出现true说明设置成功!
此时就可以用root/12345678来登录页面

Gitlab 仓库搭建(详细版)_第17张图片

Gitlab 仓库搭建(详细版)_第18张图片

成功登录root用户

Gitlab 仓库搭建(详细版)_第19张图片

3、想要登录自己创建的用户?

 解决方案 

需要用root账号通过下

Gitlab 仓库搭建(详细版)_第20张图片

点击批准

Gitlab 仓库搭建(详细版)_第21张图片  再次登录,即可登录成功 

Gitlab 仓库搭建(详细版)_第22张图片注: 觉得英文难受的可以在下图设置成中文 

Gitlab 仓库搭建(详细版)_第23张图片

九、Gitlab 图形化界面操作 

1、Gitlab关闭自动注册

在企业生产环境中,我们一般由项目负责人负责创建用户并分配权限,一般禁止员工私自注册用户,以防给项目开发工作带来安全性上的风险。为了避免员工自动注册,我们一般会禁止Gitlab的自动注册功能。在Gitlab的主菜单上,选择Menu——Admin,如下所示:

前提:使用root管理员账号密码登陆GitLab。

Gitlab 仓库搭建(详细版)_第24张图片

 之后,选择Settings——Sign-up restrictions,点击右边的Expand,如下所示:

Gitlab 仓库搭建(详细版)_第25张图片

在弹出的页面中,取消掉Sign-up enabled选项前面的勾,如下所示: 

Gitlab 仓库搭建(详细版)_第26张图片这样,点击下方的Save后,就可以使得我们的配置生效了。这样在登录的时候,就无法实现自动注册了。

Gitlab 仓库搭建(详细版)_第27张图片

2、Gitlab登录免密认证 

Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目(如Jenkins)的运用这一步是必须的。

首先,在想要进行验证的设备上执行命令:

ssh-keygen

Gitlab 仓库搭建(详细版)_第28张图片

 确认新生成的密钥文件

Gitlab 仓库搭建(详细版)_第29张图片

完成上述配置后,可以生成本设备的公私钥对,执行命令:

可以查看本设备的公钥,如下所示:

Gitlab 仓库搭建(详细版)_第30张图片

我们将该公钥复制下来,之后,我们打开Gitlab,点击右上角的用户图标,在弹出的选择框中选择Edit Profile,然后点击左边的SSH Keys,如下所示:

Gitlab 仓库搭建(详细版)_第31张图片

之后在弹出的页面中,我们将之前复制的公钥复制到上面去,如下所示:

Gitlab 仓库搭建(详细版)_第32张图片

 然后点击Add key,即可完成添加,添加完成后的页面如下:

Gitlab 仓库搭建(详细版)_第33张图片

3、Gitlab创建项目 

 Gitlab上创建项目。由于新项目的创建必须依赖于一个组,因此,我们在创建项目前,先创建组。
进入Gitlab主页面后,点击Overview中的Groups选项,然后点击右边的New group,选择新创建一个组,如下所示:

Gitlab 仓库搭建(详细版)_第34张图片

输入组的名称和描述,组的URL会随着组名称的输入而自动出现,在组的权限处,我们选择Private,并取消掉下方允许用户访问的请求,配置完成后如下所示:

Gitlab 仓库搭建(详细版)_第35张图片

 接下来,我们点击最下方的Create Group,就可以完成组的创建了,如下所示: 

Gitlab 仓库搭建(详细版)_第36张图片

Gitlab 仓库搭建(详细版)_第37张图片 接下来,我们来创建项目。项目的创建与组的创建过程类似,都是输入项目名称,选择组的名称,项目描述以及权限等,配置好的项目如下所示:

Gitlab 仓库搭建(详细版)_第38张图片

配置完成后,就可以创建项目了。
创建项目后,Gitlab会自动创建一个README.md的文件,我们可以在线对该文件机型编辑,如下所示:

Gitlab 仓库搭建(详细版)_第39张图片

4、使用管理员创建用户 

前提:使用root管理员账号密码登陆GitLab

Gitlab 仓库搭建(详细版)_第40张图片

Gitlab 仓库搭建(详细版)_第41张图片

初始密码由管理员设置,

当用户第一次登录时,由用户进行修改密码

Gitlab 仓库搭建(详细版)_第42张图片

Gitlab 仓库搭建(详细版)_第43张图片

5、Gitlab 添加邮箱设置

 邮箱是企业进行工作中的通知,交互必不可少的部分,gitlab同样支持邮箱的配置,方便对一些操作有邮件的提醒,以QQ邮箱为例,进行gitlab邮箱的添加。(邮件授权码)

5.1、开启smtp功能

Gitlab 仓库搭建(详细版)_第44张图片

修改gitlab配置
vim /etc/gitlab/gitlab.rb

Gitlab 仓库搭建(详细版)_第45张图片

 #更新配置文件
gitlab-ctl reconfigure
gitlab-ctl restart

 5.2、验证

Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
Notify.test_email('[email protected]', 'GitLab email', 'Hellow world').deliver_now
执行 gitlab-rails console进入控制台交互界面, 
然后在控制台提示符后输入下面内容发送一封测试邮件,测试完成后exit()退出。

Gitlab 仓库搭建(详细版)_第46张图片

Gitlab 仓库搭建(详细版)_第47张图片 

6、修改登录欢迎页面 

看下图操作即可

Gitlab 仓库搭建(详细版)_第48张图片

设置完的效果图:Gitlab 仓库搭建(详细版)_第49张图片

十、Gitlab命令行操作 

第一次使用该项目地址的话,需要创建新版本库,首先从主项目上fork一个自己的项目。
从自己项目上获取clone(克隆)链接地址。在想要存放的目录下执行

Gitlab 仓库搭建(详细版)_第50张图片

git clone http://192.168.111.50:9091/ceshi/git-test.git

Gitlab 仓库搭建(详细版)_第51张图片

 查看日志

Gitlab 仓库搭建(详细版)_第52张图片1、命令行新建分支 

查看当前所在的分支
git branch 查看分支

Gitlab 仓库搭建(详细版)_第53张图片 

git branch deve 创建分支,deve为新的分支名,可改

Gitlab 仓库搭建(详细版)_第54张图片

git checkout dave  进入到刚刚创建的分支
切换分支

查看状态(跟源文件有出入的文件)

git status
git push -u origin dave 		提交到新分支中

Gitlab 仓库搭建(详细版)_第55张图片

添加分支成功

Gitlab 仓库搭建(详细版)_第56张图片 在切换回main分支

2、上传代码到仓库

 首次使用Git的话,需要设置全局的用户名和邮箱设置,如下图所示:

Gitlab 仓库搭建(详细版)_第57张图片

在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "[email protected]"

在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。
这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "[email protected]"

# 查看配置
 git config --list

Gitlab 仓库搭建(详细版)_第58张图片

git init			初始化git
git remote add origin http://192.168.111.50:9091/ceshi/git-test.git	将本地git和服务器上的连接
git add 1.java		添加要提交的本地项目	(.代表所有 可用文件名代替. 上传某个文件)
git commit -m "测试代码"		提交到本地仓库
git push -u origin main 	将项目推送到gitlab端
 
 
出现报错:
 fatal: 远程 origin 已经存在 
解决:
 #删除远程配置 git remote rm origin 
#重新添加 git remote add origin http://192.168.58.10:9091/ceshi/git-test.git

Gitlab 仓库搭建(详细版)_第59张图片

这样就可以了,刷新gitlab页面就可以看到上传的项目了

Gitlab 仓库搭建(详细版)_第60张图片 

3、Git 命令行常用指令的使用 

git status     #上次提交后是否对文件再做了修改项目
git add .         #添加所有的变动
git checkout -b 文件夹名称         #创建本地分支并切换分支 git checkout -b pr/ffr
git commit -m “描述”             #提交修改 git commit -m “修改什么”
git merge origin/develop “本地分支”         #合并origin/develop上别人所做的修改到自己的本地分支 git merge origin/develop pr/ffr
git push origin “本地分支” #推送本地分支到远程,并建立联系 git push origin pr/ffr
git rebase -i 编号 #合并多次提交,将前几次的提交合并为一次
git checkout 分支名 #切换分支 git checkout pr/FFR-color git cherckout develop
git pull #更新当前分支的状态
git branch #列出本地分支
git branch -a #列出本地分支与远程分支
git branch -D 分支名 #删除分支(目前仅用于删除本地分支)
git remote -v #可以查看远程仓库信息
git branch 分支名 #仅仅创建 一个新分支,并不会自动切换到新分支中去
git rebase --abort #退出git rebase
git reset 提交编号 #git rebase -i 提交编号,之后出现错误,可以回退到之前未合并时的日志状态
git commit --amend -m “描述” #修改上一次的提交的描述
git stash #暂存上一次的修改,准备切换到其他的分支
git stash pop #还原上一次的修改,将暂存的修改加入到新的分支

3.1、提交与修改操作

命令

说明

git add

添加文件到暂存区

git status

查看仓库当前的状态,显示有变更的文件。

git diff

比较文件的不同,即暂存区和工作区的差异。

git commit

提交暂存区到本地仓库

git reset

回退版本

git rm

删除工作区文件

git mv

移动或重命名工作区文件

十一、项目创建(测试)

1、GitLab权限

1.1、访问权限

访问权限是在建立项目时就需要选定的,主要用于决定哪些人可以访问此项目:

Gitlab中的组对项目有三种访问权限

权限名称

权限类型

权限说明

私有

Private

只有属于该项目成员才有权限查看和操作项目

内部

Internal

具有GitLab账号的人员登陆后都可以克隆项目

公开

Public

任何人都可以克隆

1.2、GitLab分支角色管理

Gitlab用户在组中有五种权限:

角色名称

角色类型

角色说明

匿名用户

Guest

访客【只能创建问题和留言评论】

报告人

Reporter

可以理解为测试员、产品经理等,一般负责提交问题等

开发人员

Developer

负责项目开发

管理者

Master

一般是组长,负责对Master分支进行维护

所有者

Owner

一般是项目经理【拥有所有权限】

不同角色,拥有不同权限,下面列出Gitlab各角色权限 :

1.3、工程权限

Gitlab 仓库搭建(详细版)_第61张图片

Gitlab 仓库搭建(详细版)_第62张图片

注意:关于保护分支的设置,可以进入Settings->Protected branches进行管理 

1.4、组权限

Gitlab 仓库搭建(详细版)_第63张图片

2、设置用户权限 

前提:使用root管理员账号密码登陆GitLab

选择项目可以进行权限分配

Gitlab 仓库搭建(详细版)_第64张图片

Gitlab 仓库搭建(详细版)_第65张图片

Gitlab 仓库搭建(详细版)_第66张图片 先设置全局每个机器都必须自报家门:你的名字和Email地址。

git clone http://192.168.111.50:9091/weilai/git-test.git   
 首先从主项目上fork一个自己的项目。
从自己项目上获取clone(克隆)链接地址。
在想要存放的目录下执行
 
以liy用户登录

Gitlab 仓库搭建(详细版)_第67张图片

 由于main 是受保护的分支,开发者没有权限将代码上传到main 分支(主干分支)中

Gitlab 仓库搭建(详细版)_第68张图片

Gitlab 仓库搭建(详细版)_第69张图片

 Main 分支受保护中(主干分支)

Gitlab 仓库搭建(详细版)_第70张图片 所以我们切换分支,切换到deve分支中 

Gitlab 仓库搭建(详细版)_第71张图片

开发者用户liy 编写代码,将代码上传至仓库,将代码上传至分支deve

Gitlab 仓库搭建(详细版)_第72张图片 刷新查看仓库,查看分支有我们开发者写的代码

Gitlab 仓库搭建(详细版)_第73张图片

使用管理员root 用户创建新的用户yong 

Gitlab 仓库搭建(详细版)_第74张图片

 创建用户后,会发送邮箱,设置密码

Gitlab 仓库搭建(详细版)_第75张图片

 设置密码成功

Gitlab 仓库搭建(详细版)_第76张图片 Yong 用户登录成功

Gitlab 仓库搭建(详细版)_第77张图片

 切换回root用户

Gitlab 仓库搭建(详细版)_第78张图片

 邀请用户yong 进入项目 且为匿名用户 guest  只能进行访问以及评论

 

定义全局用户yong

用户yong 无法克隆项目  用户yong 为匿名用户(客人),所以没有权限下载项目

 Gitlab 仓库搭建(详细版)_第79张图片

 可以进行分支合并,主要就是开发者编写完代码后,与主干分支进行合并,组成项目

Gitlab 仓库搭建(详细版)_第80张图片 Gitlab 仓库搭建(详细版)_第81张图片 

Gitlab 仓库搭建(详细版)_第82张图片 分支已合并 

3、数据流向图

本文主要描述了gitlab 部分的一些操作

Gitlab 仓库搭建(详细版)_第83张图片

十二、Gitlab 数据备份 

 1、Gitlab 创建备份

1.1、手动备份

创建备份文件
使用一条命令即可创建完整的Gitlab备份。
gitlab-rake gitlab:backup:create   
使用命令会在/var/opt/gitlab/backups目录下创建一个压缩包,这个压缩包就是Gitlab整个的完整部分。

Gitlab 仓库搭建(详细版)_第84张图片

生成完后,/var/opt/gitlab/backups目录
创建一个名称类似为1655990519_2022_06_23_15.0.2_gitlab_backup.tar的压缩包

其中

/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf  nginx配置文件
/etc/postfix/main.cfpostfix  邮件配置备份

2、更改Gitlab备份目录

也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
修改为你想存放备份的目录即可
 
gitlab_rails['backup_path'] = "/home/gitlab-backup"
 
 
#指定备份后数据存放的路径、权限、时间配置
gitlab_rails['manage_backup_path'] = true              开启备份功能
gitlab_rails['backup_path'] = "/home/gitlab-backup"        指定备份的路径
gitlab_rails['backup_archive_permissions'] = 0644        备份文件的权限
gitlab_rails['backup_keep_time'] = 7776000             备份保留时间

Gitlab 仓库搭建(详细版)_第85张图片

修改完成之后使用下面命令重载配置文件即可.
 
gitlab-ctl reconfigure

创建备份目录并授权
chown -R git:git gitlab-backup

Gitlab 仓库搭建(详细版)_第86张图片

使用命令创建完整的Gitlab备份。

Gitlab 仓库搭建(详细版)_第87张图片

这个压缩包就是gitlab 的整个完整部分

3、Gitlab自动备份

定时自动备份

实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务

3.1、方法一、输入: crontab -e 然后添加相应的任务

 

#输入命令crontab -e
crontab -e  
#输入相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1  
注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
 
#查看周期性计划任务
crontab -l 

Gitlab 仓库搭建(详细版)_第88张图片

Gitlab 仓库搭建(详细版)_第89张图片

3.2、脚本执行gitlab 备份 

#!/bin/bash
a="/home/gitlab-backup"
back="/home/git_back"
date="$(date +%Y-%m-%d)"
logfile=$back/$date.log
gitlab-rake gitlab:backup:create > /dev/null
b=`ls $a |wc -l`
if [ $b -eq 0 ];then
echo "$date.tar 备份失败" >> $logfile
elif [ $b -gt 0 ];then
echo " $date.tar 备份成功" >> $logfile
fi
mv  $a/*   $back/$date.tar

Gitlab 仓库搭建(详细版)_第90张图片

Gitlab 仓库搭建(详细版)_第91张图片

 将脚本加入周期性计划执行

Gitlab 仓库搭建(详细版)_第92张图片

十三、Gitlab-CI/CD 

扩展

Gitlab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:

Continuous Integration (CI)  持续集成

Continuous Delivery (CD)     持续交付

Continuous Deployment (CD)   持续部署

CICD是什么?

持续集成(Continuous Integration)、持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法,关于持续集成、持续交付、持续部署,总结如下:

1、持续集成的重点是将各个开发人员的工作集合到一个代码仓库中。通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
2、持续交付的目的是最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
3、持续部署是一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建/部署。

持续集成的好处是什么?

 持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,持续集成无法消除bug,但却能大大降低修复的难度和时间。

持续交付的好处是什么?

持续交付的好处在于快速获取用户反馈;适应市场变化和商业策略的变化。开发团队保证每次提交的修改都是可上线的修改,那么决定何时上线,上线哪部分功能则完全由产品业务团队决定。

虽然持续交付有显著的优点,但也有不成立的时候,比如对于嵌入式系统的开发,往往需要软硬件的配合。

持续部署的好处是什么?

持续部署的目标是通过减少批量工作的大小,并加快团队工作的节奏,帮助开发团队在其开发流程中消除浪费。这使团队能够一直处于一种可持续的平稳流状态, 让团队更容易去创新、试验,并达到可持续的生产率。

十四、总结

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
 

你可能感兴趣的:(github)