gitlab

ops/2024/12/12 2:15:25/

一、gitlab 概念

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
b和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务
GitLa器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

1.1、gitlab与SVN 区别

  • GitLab:基于 Git 的分布式版本控制系统。每个开发者的工作站都有完整的代码仓库,包括所有的历史版本和分支。开发者可以在本地进行更改,离线工作。
  • SVN:集中式版本控制系统。版本库存储在中央服务器上,开发者从中央服务器检出代码,进行更改后再提交到中央服务器。每个开发者的本地副本不包含全部历史版本。

二、部署本地gitlab服务器(使用docker搭建)

虚拟机要求至少 4G 内存

1、安装 docker
yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce docker-ce-cli containerd.io

建议换成华为云

mkdir /etc/docker

cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}
}
EOF

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service

2、拉取镜像
docker pull twang2218/gitlab-ce-zh

比较大,有1G多推荐使用【前置资源】

docker load -i gitlab-ce-zh.tar

由于容器也需要使用 22 端口,需要将容器所在主机的 ssh 服务端口改为 2222
vim /etc/ssh/sshd_config

修改
Port 2222

systemctl restart sshd

退出当前 ssh 连接,再使用 2222 端口重新连接
ssh -p 2222 root@192.168.88.78

3、启动容器

docker run -d \
-h gitlab \                        #指定容器中的主机名
-p 443:443 -p 80:80 -p 22:22 \
--name gitlab \                    #指定容器名
--restart always \
-v /srv/gitlab/config:/etc/gitlab \              #挂载gitlab的配置文件
-v /srv/gitlab/gitlab/logs:/var/log/gitlab \     #挂载gitlab的日志文件
-v /srv/gitlab/gitlab/data:/var/opt/gitlab \     #挂载gitlab的数据
twang2218/gitlab-ce-zh:latest
------------------------------------------------------------------------
docker run -d \
-h gitlab \
-p 443:443 -p 80:80 -p 22:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh:latest

由于 gitlab 容器需要资源较多,需要等几分钟才能正常使用,等看到状态显示为 (healthy) 就代表已经启动了
docker ps -a

三、gitlab应用

浏览器访问:http://192.168.88.78

1、设置管理员 root 用户的新密码,注意有格式要求,这里设置成 root@123

2、使用管理员 root 用户登录(root/root@123),登录后点击页面上方的【扳手】图标进入“管理区域”

gitlab 中重要的概念:

群组(group):对应一个开发团队,比如开发部组、测试部组、运维部组等。
项目(project):对应软件项目,比如开发部开发的每一个软件项目。
成员(member):对应用户,用于将用户加入到组中,比如可将几个程序员加入到某一个软件项目组中,各自完成不同的功能模块的代码并上传,来共同完成整个软件项目。

3、创建名为 yc666的组
点击 【新建群组】
【群组路径】、【群组名称】、【描述】
【可见等级】设置成 公开
其他都保持默认值,点击 【创建群组】


4、创建自己的账户,如 yc,账户加入到 yc666组中
点击页面上方的【扳手】图标进入“管理区域”
点击 【新建用户】
【姓名】设置成 yc
【用户名】设置成 ycyc
【电子邮箱】设置成 yc@pp.com
这里密码暂不设置,其他都保持默认值,先点击 【创建用户】

创建好用户后再点击右上角的【编辑】,可在这里设置密码,,如 abc@1234


5、创建项目 myweb,授权 yc是项目的主程序员,使其具有上传代码的权限
点击页面上方的【扳手】图标进入“管理区域”
点击 【新建项目】
【项目路径】群组选项下拉选择 yc666
【项目名称】设置成 myweb
【项目描述】设置成 myweb
【可见等级】设置成 公开
点击 【创建项目】

添加单个成员到项目中
点击左边菜单【设置】->【成员】进入“项目成员”
【添加成员】中的【选择要邀请的成员】选择 yc
【选择角色权限】选择 主程序员
点击 【添加到项目】

通过在群组中添加成员,加入到项目中


点击页面上方的【群组】->【您的群组】选择 yc666
点击左边菜单【成员】
【添加成员到 yc666】选择 yc,主程序员
点击 【添加到群组】


6、使用自己创建的账户进行管理
退出当前账户,使用自己创建的账户 yc登录(ycyc/abc@1234)
第一次登录会被强制要求修改密码(ycyc/root@123),可与旧密码相同,再重新登录

3.1、git的使用

对于没有创建过 git 版本库的主机
cd /opt

git clone   表示去远程到仓库去克隆到本地计算机

git clone http://192.168.88.78/yc666/newweb.git 

需要账户密码

查看一下

ls -A myweb/


.git

会发现有.git,这个才是仓库

cd newweb/

touch README.md

加载到本地工作区域
git add README.md

提交信息到远程
git commit -m "add README"

第一次需要配置


git push -u origin master

  • -u 或 --set-upstream:这个选项的作用是设置上游(upstream)分支。简单来说,它会在本地分支和远程分支之间建立一个关联,这样以后你就可以直接使用 git pull 或 git push 而不必指定远程仓库和分支名称了。这个关联会保存在你的 Git 配置中,使得未来的操作更加方便。

  • origin:这是远程仓库的默认名称。当你克隆一个仓库时,Git 会自动为这个远程仓库命名为 origin。你可以通过 git remote -v 命令查看所有远程仓库及其对应的 URL。

  • master:这是你要推送的本地分支的名称,同时也是目标远程仓库中的分支名称。

 

对于已存在 git 版本库的主机
(1)使用 http 协议将本地软件项目代码推送到 git 服务器
cd ~/myweb/

添加一个远程仓库上传代码方式的 url 名称为 origin
git remote add origin http://192.168.88.78/yc666/newweb.git

  • Git 会在你的本地仓库中添加一个名为 origin 的远程仓库,并将其 URL 设置为 http://192.168.88.78/yc666/newweb.git。之后,你就可以使用 git push origin 和 git pull origin 等命令来与这个远程仓库进行交互了。

查看远程仓库
git remote

推送本地代码到远程仓库
git push -u origin --all        #输入账户名和密码

推送 tag 标记到远程仓库
git push -u origin --tags        #输入账户名和密码

刷新页面即可看到上传的代码和对应的 tag 标记


(2)使用 ssh 免密推送代码
点击右上角的用户选项选择【设置】
点击左边菜单【SSH密钥】,再点击页面中的【generate one】查看如何生成密钥

ssh-keygen -t rsa -C "yc@yc.com" -b 4096     #一路回车
cat ~/.ssh/id_rsa.pub

将公钥拷贝到网页中的公钥文本框中,再点击【增加密钥】

查看当前的 remote 方式
git remote show origin

更换上传代码方式
git remote remove origin        #删除以前的方式

添加远程仓库上传代码方式
git remote add origin git@192.168.88.78:yc666/newweb.git

git remote show origin

推送测试
echo '<h3>new line</h3>' >> index.html
git add .
git commit -m "modify index third"

创建标签

git tag v1.4

git push

git push -u origin --tags

刷新页面即可看到上传的代码和对应的 tag 标记


 


http://www.ppmy.cn/ops/141135.html

相关文章

ansible playbook 使用 script 模块在远程主机上执行脚本

需求一&#xff1a; 要在所有的远程主机上执行一下收集脚本&#xff0c;并在控制台打印出来 脚本如下&#xff1a; [root192 Playbooks]# cat CollectServerInformation.sh #!/bin/bash # Collect server information echo "Collecting server information..."# OS …

Scala 隐式转换

object test {//复习隐式转换&#xff1a;//隐式转换&#xff1a;编译器 偷偷地&#xff0c;自动地帮我们把一种数据转换为另一种类型//例如&#xff1a;int --> double//它有失败的时候&#xff08;double --> int&#xff09;&#xff0c;有成功的时候//当它转换失败的…

css 实现在一条线上流动小物体(offset-path)

直接贴代码&#xff0c;留几个参考网址给大家 【SVG】路径&#xff1c;Path&#xff1e;标签详解&#xff0c;一次搞懂所有命令参数 探秘神奇的运动路径动画 Motion Path <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

LeetCode - #153 寻找旋转排序数组中的最小值

文章目录 前言1. 描述2. 示例3. 答案关于我们 前言 我们社区陆续会将顾毅&#xff08;Netflix 增长黑客&#xff0c;《iOS 面试之道》作者&#xff0c;ACE 职业健身教练。&#xff09;的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新…

Scala正则表达式全面指南:从基础到高级应用

引言 正则表达式是处理字符串的强有力工具&#xff0c;它允许开发者定义复杂的搜索模式&#xff0c;用于文本的搜索、匹配、替换和提取等。Scala语言通过scala.util.matching.Regex类提供了对正则表达式的支持&#xff0c;使得在Scala中进行文本处理变得高效而灵活。本文将全面…

【开源免费】基于SpringBoot+Vue.JS大创管理系统(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 081 &#xff0c;文末自助获取源码 \color{red}{T081&#xff0c;文末自助获取源码} T081&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Prim 算法在不同权重范围内的性能分析及其实现

Prim 算法在不同权重范围内的性能分析及其实现 1. 边权重取值在 1 到 |V| 范围内伪代码C 代码实现2. 边权重取值在 1 到常数 W 之间结论Prim 算法是一种用于求解加权无向图的最小生成树(MST)的经典算法。它通过贪心策略逐步扩展生成树,确保每次选择的边都是当前生成树到未加…

C# 中String和string的区别

在 C# 中&#xff0c;String和string在功能上基本没有区别&#xff0c;它们都用于表示字符串类型&#xff0c;但在使用场景和一些细节上有以下差异&#xff1a; 类型定义 string是 C# 中的关键字&#xff0c;它是System.String类型的别名。这意味着当你使用string时&#xff0c…