Gitlab远程仓库

本文详细介绍了GitLab的基本功能、安装步骤、汉化过程及基本使用方法,包括用户、组和项目的关系,权限管理,以及SSH免密配置。此外,还涵盖了GitLab的备份、恢复和升级流程,帮助读者全面了解和掌握GitLab的日常操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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项目,把项目目录和里面内容和分支全部克隆下来  
    

<think>好的,用户想了解如何设置或获取GitLab远程仓库链接。首先,我需要根据提供的引用内容整理步骤。 用户提到的引用[4]提到进入GitLab建立工程项目,并导入本地账号,这说明第一步可能是在GitLab上创建项目。然后引用[3]提到需要配置本地的用户名和邮箱,这可能是在本地Git的设置步骤。接下来,引用[1]和[2]涉及修改远程仓库地址和SSL验证的问题,特别是当遇到证书问题时可能需要关闭SSL验证或者使用SSH方式连接。 需要分步骤说明:首先是获取远程仓库链接,可能在项目创建后GitLab会提供。然后是设置本地仓库远程链接,可能需要使用git remote命令。另外,用户可能会遇到SSL证书问题,这时候需要根据引用[2]的方法关闭全局SSL验证,或者如引用[1]改用SSH方式,这样就不需要处理HTTP的证书问题了。同时,引用[1]还提到了添加SSH密钥到GitLab账户,这也是使用SSH连接的必要步骤。 可能用户还需要知道如何验证配置是否成功,比如引用[3]中的git config命令检查用户名和邮箱是否正确。此外,推送代码的步骤也是关键,确保配置正确后能够成功推送。 相关问题部分需要考虑用户可能遇到的后续问题,比如如何切换协议、解决证书问题、验证配置等,这些都是用户在配置远程仓库时常见的后续疑问。</think>### GitLab远程仓库链接配置方法 #### 一、获取远程仓库链接 1. **登录GitLab**,进入项目仓库页面(需先创建项目[^4])。 2. 点击项目主页的 **Clone** 按钮,选择以下协议: - **HTTP链接**:`https://gitlab.example.com/username/project.git` - **SSH链接**:`git@gitlab.example.com:username/project.git` #### 二、本地仓库配置远程链接 1. **初始化本地仓库**(如未初始化): ```bash git init ``` 2. **添加远程仓库地址**: - 使用HTTP协议(需处理证书验证问题): ```bash git remote add origin https://gitlab.example.com/username/project.git ``` - 使用SSH协议(推荐,需提前配置SSH密钥[^1]): ```bash git remote add origin git@gitlab.example.com:username/project.git ``` 3. **修改现有远程地址**(如需切换协议): ```bash git remote set-url origin git@gitlab.example.com:username/project.git # SSH示例 ``` #### 三、常见问题解决 - **SSL证书验证失败**(HTTP协议下): 关闭全局SSL验证(临时解决方案)[^2]: ```bash git config --global http.sslverify false git config --global https.sslverify false ``` - **SSH连接失败**: 1. 生成SSH密钥并添加到GitLab账户: ```bash ssh-keygen -t ed25519 cat ~/.ssh/id_ed25519.pub # 将输出内容粘贴到GitLab SSH Keys设置页 ``` 2. 测试SSH连接: ```bash ssh -T git@gitlab.example.com ``` #### 四、验证配置 ```bash git config user.name # 检查用户名是否与GitLab账户一致[^3] git config user.email # 检查邮箱是否匹配 git remote -v # 查看远程仓库地址 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值