Gitlab远程仓库

1. gitlab基本功能介绍

下载社区版gitlab路径:https://packages.gitlab.com/gitlab/gitlab-ce

开源分布式的版本控制系统,Ruby开发的。

gitlab的主要功能:
  1.管理项目源码。
  2.对项目源代码进行版本控制。
  3.对源代码的超找、复用。比较。

 gitlab与github:  
   gitlab是模仿github来实现的,只不过gitlab开源免费的。github收费(私有仓库)
安全方面考虑: 
   公司不希望某些员工能获取到所有的项目代码,gitlab。(权限控制)
   自己开发的项目,更加的推荐使用github。全球程序最多的地方。
   
gitlab优势、应用场景:
    1.开源免费
        社区版本-ce
        企业版本-ee
    2.权限管理
    3. 离线同步、git做本地的版本管理,同步到仓库。
     

2. gitlab安装

gitlab官方对gitlab软件做了一个rpm包,可以直接一键安装。

# 1. 安装(这个是使用的是yum localinstall安装时直接解决依赖问题,也可以用rpm -ivh进行安装)
[root@gitlab ~]# yum localinstall gitlab/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm -y

#2. 配置(访问的域名、邮箱、关闭一些无用的组件)学习阶段把组件关闭
 [root@gitlab ~]# grep -n "^[a-z]" /etc/gitlab/gitlab.rb

    13:external_url 'http://oldxu.gitlab.com'
    52:gitlab_rails['gitlab_email_enabled'] = true
    53:gitlab_rails['gitlab_email_from'] = '572891887@qq.com'
    54:gitlab_rails['gitlab_email_display_name'] = 'Example-Gitlab'
    517:gitlab_rails['smtp_enable'] = true
    518:gitlab_rails['smtp_address'] = "smtp.qq.com"
    519:gitlab_rails['smtp_port'] = 465
    520:gitlab_rails['smtp_user_name'] = "572891887@qq.com"
    521:gitlab_rails['smtp_password'] = "授权码"
    522:gitlab_rails['smtp_domain'] = "qq.com"
    523:gitlab_rails['smtp_authentication'] = "login"
    524:gitlab_rails['smtp_enable_starttls_auto'] = true
    525:gitlab_rails['smtp_tls'] = true
    1385:prometheus['enable'] = false
    1386:prometheus['monitor_kubernetes'] = false
    1452:alertmanager['enable'] = false
    1474:node_exporter['enable'] = false
    1493:redis_exporter['enable'] = false
    1511:postgres_exporter['enable'] = false
    1540:gitlab_monitor['enable'] = false
    1560:grafana['enable'] = false
    
    
#每次修改/etc/gitlab/gitlab.rb文件时,都需要进行初始化操作:
[root@gitlab ~]# gitlab-ctl reconfigure        #第一次需要的时间较久
#第一次进入gitlab,需要先配置超级管理员的密码
# user: root   
# password: oldxu.com

gitlab-ctl  tail -f  可以看日志
netstat -lntp

GitLab的安装和启动、访问:

  1. 配置yum源
[root@gitlab ~]# cat /etc/yum.repos.d/gitlab-ce.repo  
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
  1. 更新本地yum缓存
yum makecache
  1. 安装GitLab
yum install gitlab-ce #自动安装最新版
  1. 修改配置文件 vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.domain.com:10000'
nginx['listen_port'] = 10000

小提示:nginx默认监听的是80 端口,如果nginx 修改端口,external_url 里面也必须带端口

启动gitlab:gitlab-ctl reconfigure && gitlab-ctl start
查看状态:gitlab-ctl status

访问地址:http://gitlab.domain.com:10000 登录修改root 的密码
gitlab 默认管理用户是root
  1. 修改中文显示
1.进入gitlab后台
点击右上角个人头像 -> settings -> profile -> Preferences
2.默认选项是"English",选择"简体中文",然后点击下面绿色按钮"Update profile settings"
3.刷新页面

3. gitlab汉化

[root@gitlab ~]# cd gitlab/
[root@gitlab gitlab]# tar xf gitlab-12-0-stable-zh.tar.gz

[root@gitlab gitlab]# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
cp: 无法以目录"gitlab-12-0-stable-zh/log" 来覆盖非目录"/opt/gitlab/embedded/service/gitlab-rails/log"
cp: 无法以目录"gitlab-12-0-stable-zh/tmp" 来覆盖非目录"/opt/gitlab/embedded/service/gitlab-rails/tmp"


[root@gitlab gitlab]# gitlab-ctl reconfigure
[root@gitlab gitlab]# gitlab-ctl restart			#重启所有的服务

#大约重启后,需要等待1分钟左右,否则会出现502错误。
	#  是因为Nginx启动速度较快,而我们的 unicorn 主程序启动慢。所以会出现。


==========================================================
小提示:

[root@gitlab gitlab]# gitlab-ctl status   查看启动的组件
nginx 对外访问的
redis  用来加速的
postgresql  做数据存储的
unicorn  是主程序
gitlab-workhorse  专门接收输入的,转给uniq的核心程序

除了下面的设置,要想全部汉化,需要下载汉化补丁包
在这里插入图片描述

4. gitlab的基本使用

4.1 用户和组和项目三者关系

用户组权限之间关系
在这里插入图片描述

  • 1.创建组 dev ops

  • 2.基于组创建项目 (dev tb项目 ops jd zfb项目)

  • 3.创建用户 oldguo、oldxu、oldboy

  • 4.将用户添加到组中,并为每个用户分配不同的角色。

    • oldguo 分配dev 授权为主程序员
    • oldxu 分配ops 授权为主程序员
    • oldboy分配到ops 授权为开发者

具体创建如下图所示:

第一步:创建dev、ops两个组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAQ9LvSZ-1629040633838)(D388124E496946BF9178FD01B0D5BD73)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4UW5YcV-1629040633843)(3E5C6EEE3BD44F23AC5057DAB0E16563)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWb3F2PK-1629040633850)(86BACA55D63B4C21855A26FF34F93816)]

第二步:基于组创建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三步:创建用户 oldguo、oldxu、oldboy

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ho4r7mFS-1629040633856)(7C36DB34162A45ADB3A1D4A00340B5DE)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMlXkF8d-1629040633857)(B4FFC93B9252460FB71655CA4017C841)]
在这里插入图片描述
在这里插入图片描述

第四步:将用户添加到组中,并为每个用户分配不同的角色。
在这里插入图片描述

4.2 案例一

验证oldguo是否能看到 jd、zfb等项目

oldguo看不到jd和zfb,他只能看到 tb项目
原因是:jd和zfb属于ops组,与dev组无关。

  oldxu: 能看到 jd、zfb
  oldboy:能看到 jd、zfb
  oldguo: 能看到tb

具体操作如下图所示:

在这里插入图片描述

4.3 案例二

验证一下同一个组,不同的角色,权限有什么不一样的?

ops组(组中有两个成员oldxu和oldguo)

(1)oldxu:主程序员(可以直接往master分支提交代码)

        echo "10.0.0.110 gitlab.oldxu.com" >> /etc/hosts
        git clone http://gitlab.oldxu.com/ops/zfb.git
        cd zfb/
        echo "Oldxu..." >> file.txt
        git add .
        git commit -m "oldxu---"
        git push -u origin master

(2)oldboy:开发者 (权限太低,不能直接往master提交代码)

    $ echo "# 我是Oldboy" > README.md
    $ git add .
    $ git commit -m "oldboy添加了README文件"
    $ git push origin master

    remote: GitLab:
    remote: A default branch (e.g. master) does not yet exist for ops/zfb
    remote: Ask a project Owner or Maintainer to create a default branch:
    remote:
    remote:   http://gitlab.oldxu.com/ops/zfb/-/project_members
    remote:
    To http://gitlab.oldxu.com/ops/zfb.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'http://gitlab.oldxu.com/ops/zfb.git'

针对oldboy权限不足的问题,有多重方式解决这种问题:

简单:
  1.直接关闭分支保护(项目--设置--仓库--保护分支,)
   2.分支保护的权限是 主程序可以提交,那可不可以在家一个开发者也可以提交呢?
   
麻烦:
  1.oldboy用户创建一个dev分支,然后提交。(允许)
  2.使用oldboy用户登陆gitlab服务器,申请将dev合并到Master分支,然后通知主程序审批
    同意:代码合并成功。
    不同意:代码合并失败。
    
后期如何协同工作:
  1.oldxu领导身份:直接在Master上提交代码。
  2.oldboy需要先通过git pull拉取最新的Master代码。
  3.oldboy需要切换到dev分支,将Master代码merge到dev分支上。
  4.oldboy修改代码,然后提供到远程仓库。
  5.oldboy提交合并请求,等到领导审批通过。

具体操作如下图所示:

(1)简单的方式:
在这里插入图片描述

(2)麻烦的方式(最合理):

在这里插入图片描述

正确的解决方式:

# 1. 拉取项目(在项目文件夹下)  
git  pull origin master  
# 2. 创建dong分支
git branch dong
# 3. 在dong分支创建文件,提交暂存区,提交本地仓库
echo  “呵呵” > hehe.txt
git add .
git commit --m "dong分支创建的第一个文件"
# 4. 提交到远程仓库的dong分支上
git push -u origin dong  
# 5. 登录oldboy用户后,发出合并请求

在这里插入图片描述

小总结:

(1)第一次提交的时候要加-u 选项:
git push -u origin dong      

(2)git clone http://10.0.0.200/ops/zfb.git 直接把整个项目都拉取下来  

(3)git push origin master   

    在项目目录中执行整个命令,可以拉取项目中的所有文件,不拉去项目的目录   

(4)工作的时候一定要去拉取最新的项目,然后再去push到远程仓库。(如果要写代码的时候,一定要拉取新的项目,写好之后在提交。)

4.4 案例三

将http协议修改为ssh协议
为什么要改?因为每次都要输入密码不方便。

1.生成公钥,然后将公钥放置自己的用户下面。这样你这个用户对哪个项目有权限。就可以免密直接操作:
ssh-keygen
cat ~/.ssh/id_rsa.pub
登陆Gitlab-->用户-->设置--SSH秘钥,添加。  

2. 修改项目的http协议为ssh协议    

[root@gitlab zfb]# git remote -v
origin http://gitlab.oldxu.com/ops/zfb.git (fetch)
origin http://gitlab.oldxu.com/ops/zfb.git (push)

[root@gitlab zfb]# git remote remove origin
[root@gitlab zfb]# git remote -v  

#重新添加:
[root@gitlab zfb]# git remote add origin git@gitlab.oldxu.com:ops/zfb.git
[root@gitlab zfb]# git remote -v
origin    git@gitlab.oldxu.com:ops/zfb.git (fetch)
origin    git@gitlab.oldxu.com:ops/zfb.git (push) 

3. 测试是否能免密  
[root@gitlab zfb]# vim file.txt
[root@gitlab zfb]# git add .
[root@gitlab zfb]# git commit -m "dsa"
[root@gitlab zfb]# git pull origin master
[root@gitlab zfb]# git push origin master

具体操作如下图所示:
在这里插入图片描述

5. gitlab备份恢复升级

备份:

[root@gitlab zfb]# gitlab-rake gitlab:backup:create

#完成备份:
备份到哪:gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
备份周期:gitlab_rails['backup_keep_time'] = 604800

修改完配置之后必须要进行 gitlab-ctl reconfigure 才会生效。
恢复数据的时候默认到配置文件指定的目录下去找

#如何每天定点备份呢? crontab
00 02 * * * gitlab-rake gitlab:backup:create &>/dev/null

在这里插入图片描述

恢复:

误操作恢复 | 迁移,也需要恢复  

[root@gitlab ~]# gitlab-ctl stop unicorn #停掉数据的写入功能
[root@gitlab ~]# gitlab-ctl stop sidekiq  

#注意:默认会上/var/opt/gitlab/backups查找备份文件
[root@gitlab ~]# gitlab-rake gitlab:backup:restore BACKUP=1597376724_2020_08_14_12.0.3  

#恢复后重启所有服务
[root@gitlab ~]# gitlab-ctl restart  

升级:

gitlab12版 无法直接升级到 gitlab13版   (直接就会报错)  
gitlab-12.0.3  需要先升级到12的最新版。然后在升级到gitlab-13版 

#1.先升级到12.10版本(12.10.9,后面的那个9无所谓,以为最新就是12.10)
[root@gitlab ~]# yum localinstall gitlab-ce-12.10.9-ce.0.el7.x86_64.rpm  -y

#2.检查是否已经升级到12的最新版,然后确认下数据是都还正常。

#3.升级至gitlab-ce 13版本(也可以用rpm -ivh):
[root@gitlab ~]# yum localinstall gitlab-ce-13.0.10-ce.0.el7.x86_64.rpm -y  
Running transaction
  * gitlab_monitor['enable'] has been deprecated since 12.3 and was removed in 13.0. Use gitlab_exporter['enable'] instead.
  Deprecations found. Please correct them and try again.  
  
# 4. 修改配置文件 
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
  将 gitlab_monitor['enable'] = false  修改为   gitlab_exporter['enable'] = false
  
# 5. 重载配置文件
gitlab-ctl reconfigure
gitlab-ctl restart  


解决错误后,再次执行
  yum localinstall gitlab/gitlab-ce-13.0.10-ce.0.el7.x86_64.rpm -y

在这里插入图片描述
在这里插入图片描述

6. 小总结

  1. git pull 和 git pull origin master 和 git clone 区别
(1)git pull 
    git pull 默认是拉取远程仓库的master分支
    拉取master主分支里面的文件,直接和本地仓库的内容作比较。
    也就是直接替换掉本地仓库的内容。如果工作目录中的文件没有提交到本地仓库,则文件不受影响。
    
    在项目目录中执行git pull 直接把远程master分支中的文件给拉取过来

(2)git pull origin master
    git pull origin master 拉取远程仓库的master分支  
    git pull origin dong  拉取远程仓库的dong分支

(3) git clone git@10.0.0.200:ops/test.git
    克隆test.git项目,把项目目录和里面内容和分支全部克隆下来  
    

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值