完整教程:分布式版本控制系统Gitlab

news/2026/1/26 21:09:51/文章来源:https://www.cnblogs.com/ljbguanli/p/19535567

完整教程:分布式版本控制系统Gitlab

目录

一、环境

二、部署

1. 开启邮件服务

2. 添加YUM源

3. 安装gitlab

4. 查看gitlab版本

三、配置

1.  配置登录接口

2. 配置smtp邮件通知

3. 初始化启动

4. 发送邮件测试

5. 浏览器登录

(1)修改密码

(2)取消用户自动注册功能(安全)

(3)修改中英文皮肤

​编辑四、创建项目

五、开发机克隆远程仓库

六、上传Markdown帮助文档

七、新建分支

验证


一、环境

关闭防火墙和SELINUX

主机名IP地址系统版本
gitlab-server192.168.159.133CentOS Stream release 9

二、部署

1. 开启邮件服务

yum install -y postfix && systemctl start  postfix && systemctl enable postfix

2. 添加YUM源

(1)官方源:

 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

(2)清华源:

[root@gitlab-sever ~]# vim  /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

3. 安装gitlab

yum -y install gitlab-ce  #自动安装最新版

4. 查看gitlab版本

[root@gitlab-sever ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 18.5.1

三、配置

1.  配置登录接口

[root@gitlab-sever ~]# grep "192.168.159.133" /etc/gitlab/gitlab.rb 
external_url 'http://192.168.159.133'

2. 配置smtp邮件通知

[root@gitlab-sever ~]# grep "gitlab_rails" /etc/gitlab/gitlab.rb | grep -v "^#"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "2126177631@qq.com"
gitlab_rails['smtp_password'] = "pbdvpdxauvwvfddi"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '2126177631@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['gitlab_email_reply_to'] = '2126177631@qq.com'
gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'

3. 初始化启动

[root@gitlab-sever ~]# gitlab-ctl reconfigure
[root@gitlab-sever ~]# gitlab-ctl start
[root@gitlab-sever ~]# lsof -i:80
COMMAND    PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx     4497       root    7u  IPv4  68812      0t0  TCP *:http (LISTEN)
nginx     4498 gitlab-www    7u  IPv4  68812      0t0  TCP *:http (LISTEN)
nginx     4499 gitlab-www    7u  IPv4  68812      0t0  TCP *:http (LISTEN)
nginx     4499 gitlab-www   16u  IPv4  67979      0t0  TCP bogon:http->bogon:58438 (ESTABLISHED)
nginx     4500 gitlab-www    7u  IPv4  68812      0t0  TCP *:http (LISTEN)
nginx     4501 gitlab-www    7u  IPv4  68812      0t0  TCP *:http (LISTEN)
gitlab-ka 4568        git    7u  IPv4  68899      0t0  TCP bogon:58438->bogon:http (ESTABLISHED)

4. 发送邮件测试

# 发送邮件
[root@gitlab-sever ~]# gitlab-rails console
--------------------------------------------------------------------------------Ruby:         ruby 3.2.8 (2025-03-26 revision 13f495dc2c) [x86_64-linux]GitLab:       18.5.1 (2e5ae10576d) FOSSGitLab Shell: 14.45.3PostgreSQL:   16.10
------------------------------------------------------------[ booted in 37.54s ]
Loading production environment (Rails 7.1.5.2)
irb(main):001> Notify.test_email('2126177631@qq.com', 'Test Subject', 'Test Body').deliver_now
net-smtp (0.3.3) lib/net/smtp.rb:1076:in `check_response':  (Net::SMTPUnknownError)from net-smtp (0.3.3) lib/net/smtp.rb:1044:in `getok'from net-smtp (0.3.3) lib/net/smtp.rb:1026:in `quit'from net-smtp (0.3.3) lib/net/smtp.rb:715:in `do_finish'from net-smtp (0.3.3) lib/net/smtp.rb:614:in `start'from config/initializers/mail_starttls_patch.rb:53:in `start_smtp_session'from mail (2.8.1) lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'from mail (2.8.1) lib/mail/message.rb:2145:in `do_delivery'from mail (2.8.1) lib/mail/message.rb:253:in `block in deliver'from actionmailer (7.1.5.2) lib/action_mailer/base.rb:600:in `block in deliver_mail'from activesupport (7.1.5.2) lib/active_support/notifications.rb:208:in `instrument'from actionmailer (7.1.5.2) lib/action_mailer/base.rb:598:in `deliver_mail'from mail (2.8.1) lib/mail/message.rb:253:in `deliver'from actionmailer (7.1.5.2) lib/action_mailer/message_delivery.rb:126:in `block (2 levels) in deliver_now'from activesupport (7.1.5.2) lib/active_support/callbacks.rb:101:in `run_callbacks'from actionmailer (7.1.5.2) lib/action_mailer/message_delivery.rb:125:in `block in deliver_now'from actionmailer (7.1.5.2) lib/action_mailer/rescuable.rb:21:in `handle_exceptions'... 17 levels...
irb(main):002>

5. 浏览器登录

[root@gitlab-sever gitlab]# cat  initial_root_password
# WARNING: This password is only valid if ALL of the following are true:
#          ? You set it manually via the GITLAB_ROOT_PASSWORD environment variable
#            OR the gitlab_rails['initial_root_password'] setting in /etc/gitlab/gitlab.rb
#          ? You set it BEFORE the initial database setup (typically during first installation)
#          ? You have NOT changed the password since then (via web UI or command line)
#
#          If this password doesn't work, reset the admin password using:
#          https://docs.gitlab.com/security/reset_user_password/#reset-the-root-password
Password: sL6X3Yc8uR7Rd4u/UMPy/zNzLTVtg5VAJ7E7NhBJsZ0=
# NOTE: This file is automatically deleted after 24 hours on the next reconfigure run.

(1)修改密码

(2)取消用户自动注册功能(安全)

(3)修改中英文皮肤

可设置时间、语言、背景等



四、创建项目

五、开发机克隆远程仓库

[root@dev ~]# git config --global user.email "2126177631@qq.com"
[root@dev ~]# git config --global user.name "ink"
从远程Git 仓库服务器克隆一个完整的代码仓库到本地
[root@dev ~]# git clone http://192.168.159.133/root/test.git
Cloning into 'test'...
Username for 'http://192.168.159.133': root      # 输入用户名
Password for 'http://root@192.168.159.133':      # 输入密码
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
# 查看仓库
[root@dev ~]# ls
anaconda-ks.cfg  test
[root@dev ~]# cd test/
[root@dev test]# ls -a
.  ..  .git  README.md

持续交付

[root@dev test]# ls -a
.  ..  .git  os_info.py  README.md
[root@dev test]# git add os_info.py
[root@dev test]# git commit -m "Version01:检查系统基础状态"
[main ba57bae] Version01:检查系统基础状态1 file changed, 115 insertions(+)create mode 100644 os_info.py
[root@dev test]# git log
commit ba57bae0870e44feef7e57bec86aa87ada79d1f9 (HEAD -> main)
Author: ink <2126177631@qq.com>
Date:   Tue Oct 28 17:51:16 2025 +0800Version01:检查系统基础状态
commit 113edcc0d93ae5f7dce339dd07973732e7fa194e (origin/main, origin/HEAD)
Author: ink <2126177631@qq.com>
Date:   Tue Oct 28 17:39:31 2025 +0800Initial commit
[root@dev test]# git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/main
# 注意提交时所在的分支
[root@dev test]# git push origin main
Username for 'http://192.168.159.133': root
Password for 'http://root@192.168.159.133':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.80 KiB | 1.80 MiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To http://192.168.159.133/root/test.git113edcc..ba57bae  main -> main

六、上传Markdown帮助文档

[root@dev test]# mkdir docs
[root@dev test]# cd docs/
[root@dev docs]# vim help.md
[root@dev docs]# cat help.md
# 一、测试项目
## 1. 监控系统基础状态
(1)**CPU使用率**
(2)**内存使用率**
(3)磁盘使用率
(4)系统版本
(5)……保留选项……
[root@dev test]# git add docs
[root@dev test]# git commit -m "Version:添加docs目录及其帮助文档!"
[root@dev test]# git log
commit 7fa58cf6dd61fed6b9ad838cae7bc3de79a82a0a (HEAD -> main)
Author: ink <2126177631@qq.com>
Date:   Tue Oct 28 19:06:13 2025 +0800Version:添加docs目录及其帮助文档!
commit ba57bae0870e44feef7e57bec86aa87ada79d1f9 (origin/main, origin/HEAD)
Author: ink <2126177631@qq.com>
Date:   Tue Oct 28 17:51:16 2025 +0800Version01:检查系统基础状态
commit 113edcc0d93ae5f7dce339dd07973732e7fa194e
Author: ink <2126177631@qq.com>
Date:   Tue Oct 28 17:39:31 2025 +0800Initial commit
[root@dev test]# git push origin main

创建代码块

七、新建分支

验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1220826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年 全案设计/整体家居全案设计/家居全案设计/家具全案设计/实木家具全案设计/一站式全案设计服务商推荐榜单:打造理想生活空间的匠心之选

2026年全案设计服务商推荐榜单:打造理想生活空间的匠心之选 随着消费升级与生活理念的演进,人们对居住空间的追求已从单一的功能满足,转向对美学、舒适度、个性化与整体和谐性的综合考量。在这一背景下,全案设计、…

2026年携程任我行礼品卡回收注意事项

随着旅行消费场景日益丰富,携程任我行礼品卡因能满足机票、酒店等高频消费需求,在闲置卡券回收市场热度颇高。行业调研显示,2025年出行类礼品卡闲置率高达68%。规范回收流程,既能避免权益失效,又可让闲置资源高效…

不用记命令!Docker Compose UI+cpolar,公网也能轻松管容器

Docker Compose UI 是一款针对 Docker Compose 的可视化管理工具&#xff0c;它把原本需要手动输入的docker-compose up -d等命令&#xff0c;转化为点击、拖拽类的图形操作&#xff0c;能直观展示所有容器服务的状态、依赖关系&#xff0c;还可在界面上直接修改环境变量、端口…

【毕业设计】基于springboot的二手滑板交易系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

如何选择适合你的AutoCAD版本?AutoCAD最建议用的5个版本

CAD最建议用的5个版本是&#xff1a;AutoCAD 2007、AutoCAD 2014、AutoCAD 2016、AutoCAD 2020和AutoCAD 2022。AutoCAD 2007&#xff1a;这是一个非常经典且稳定的版本&#xff0c;许多企业和专业人士仍然在使用。虽然它的功能相对较少&#xff0c;但操作简便&#xff0c;适合…

【课程设计/毕业设计】基于springboot+Vue的飞机票预订管理系统基于springboot的机票预订系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【AI应用开发工程师】-RAG知识切片(chunk)策略解读

&#x1f370; RAG知识切片全攻略&#xff1a;五种切法&#xff0c;让你的AI更“懂”你&#xff01; 你以为AI只是“看图说话”&#xff1f;错了&#xff0c;它还得学会“切蛋糕”&#xff01;—— 没错&#xff0c;今天我们要聊的就是RAG中的切片策略&#xff0c;一种让AI更精…

DHCP练习1

在ensp中配置上图各PC的Mac地址如上图具体操作如下配置完成后&#xff0c;可先保存&#xff0c;然后双击PC最后验证如图&#xff0c;即表示成功

Java毕设项目推荐-基于springboot的公园游玩导航购物综合服务系统设计与实现小程序【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

certbot续签

https://cloud.tencent.com/developer/article/2452001静,静,静

Java毕设项目推荐-基于SpringBoot的航空公司售票系统飞机票购票系统基于springboot的机票预订系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java毕设项目推荐-基于springboot的二手商品滑板交易系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026年 北京代理记账服务深度推荐榜单:专业流程解析、透明费用对比与高效平台甄选指南

2026年北京代理记账服务深度推荐榜单:专业流程解析、透明费用对比与高效平台甄选指南 在数字经济与营商环境持续优化的宏观背景下,北京作为中国的经济与创新中心,汇聚了海量的初创企业、中小微企业及分支机构。对于…

【省钱攻略】一套产品图要花 3000?揭秘 AI 如何把“中文样机”直接修成“欧美大片”,摄影师都看不出真假!

Python 商业摄影 产品精修 亚马逊主图 AI图像处理 降本增效 虚拟摄影摘要在打造亚马逊精品 Listing 时&#xff0c;图片拍摄成本 往往占据了前期投入的大头。为了消除样品上的中文丝印或不符合海外市场的标识&#xff0c;卖家通常不得不将样品寄给深圳或海外的专业摄影工作室进…

2026年全屋高端定制厂家推荐榜单:实木家具/整体家居/一站式定制,匠心工艺与奢华体验深度解析

2026年全屋高端定制厂家推荐榜单:实木家具/整体家居/一站式定制,匠心工艺与奢华体验深度解析 随着消费升级与审美意识的觉醒,高端家居市场正经历一场深刻的变革。消费者不再满足于标准化、同质化的产品,而是追求能…

【转化黑科技】淘宝“买家秀”也能做亚马逊?揭秘 AI 如何批量清洗中文评论图,0 成本获取海量真实素材!

Python UGC营销 买家秀 社会认同 图片清洗 跨境电商运营 独立站素材 转化率提升摘要在流量越来越贵的今天&#xff0c;真实感&#xff08;Authenticity&#xff09; 是稀缺资源。数据表明&#xff0c;包含 UGC&#xff08;用户生成内容&#xff09; 的产品页面&#xff0c;转化…

【商业机密】怕新品图泄露?别再用在线翻译工具了!揭秘“离线版”AI 修图软件如何守护你的爆款 IP

Python 数据安全 IP保护 离线软件 本地化部署 跨境电商工具 新品保密摘要在跨境电商的选品与研发阶段&#xff0c;“保密” 是最高准则。很多卖家在新品未发布前&#xff0c;习惯性地使用免费的在线 OCR 网站或云端修图工具处理图片。殊不知&#xff0c;当你点击“上传”的那一…

Java毕设选题推荐:基于springboot的机票预订系统基于SpringBoot的航空公司售票系统飞机票购票系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【工厂出海】有货源没美工,怎么做跨境?AI 批量“洗图”神器,让 1688 工厂图直通亚马逊!

Python 工厂转型 工贸一体 1688图 亚马逊开店 图片翻译 降本增效 跨境电商摘要在“出海四小龙”&#xff08;Temu, SHEIN, TikTok, AliExpress&#xff09;的推动下&#xff0c;越来越多的国内工厂开始尝试 “工贸一体”&#xff0c;直接去海外卖货。然而&#xff0c;工厂面临的…

【欧洲站攻略】想做亚马逊欧洲站,被“5 种语言”劝退?揭秘 AI 如何一键生成德法意西 5 国图片,让利润翻倍!

Python 亚马逊欧洲站 Pan-EU 多语言运营 德语翻译 图片本地化 跨境电商工具摘要在跨境电商圈&#xff0c;大家都知道“美国站出单快&#xff0c;欧洲站利润高”。然而&#xff0c;欧洲市场碎片化严重&#xff0c;语言障碍 是最大的拦路虎。想做“泛欧计划&#xff08;Pan-EU&am…