Devops基础之Gitlab概述(持续更新)
定位:分布式版本控制系统(VCS)。核心概念:数据仓库(Repository):记录文件或目录状态,存储内容修改历史;包括远程数据库(专用服务器,多人共享)和本地数据库(用户本地机器配置,个人使用)。核心命令:基于本地和远程仓库的代码管理(pull、clone、fetch、push、add、commit等)。架构图定位:Git远程存储库实现,支持代码仓库存储和远程访问;基于Ruby on Rail
维护工程蓝图,追踪文件从诞生到定案的过程;软件工程技巧,确保多人编辑的同一程序文件同步;用于跟踪和维护源代码、文档、配置文件等的改动。
一、版本控制和版本控制系统(VCS)
VCS的优势
-
解决冲突:跟踪多位开发人员对同一文件的更改,帮助解决冲突,记录审计跟踪。
-
回滚和撤消更改:记录变更历史,支持撤消变更或回滚到历史状态,快速恢复稳定版本。
-
异地源代码备份:远程VCS实例可异地托管(如GitHub),作为安全备份。
-
适用场景:多位开发人员维护的项目,以及单人维护的项目。
二、Git基础
(一)Git简介
定位:分布式版本控制系统(VCS)。
-
核心概念:
-
数据仓库(Repository):记录文件或目录状态,存储内容修改历史;包括远程数据库(专用服务器,多人共享)和本地数据库(用户本地机器配置,个人使用)。
-
核心命令:基于本地和远程仓库的代码管理(pull、clone、fetch、push、add、commit等)。
-
-
架构图

(二)Git基础概念
-
三大空间
-
工作区(working directory):项目目录内部空间,项目目录下隐藏的.git子目录是暂存区和版本库的存放位置。
-
暂存区(staging area/index/cache):Git跟踪和保存文件更改的地方;用户在工作区更改后,通过
git add命令将更改复制到暂存区;仅记录执行暂存命令前的更改,后续更改需重新暂存。 -
版本库(repository):暂存区更改累积到一定程度后,通过
git commit命令提交至版本库持久保存;提交是检查点,记录暂存区与前一次提交的差异;提交后暂存区自动清空。 -
关系:working directory →(git add)→ staging area →(git commit)→ repository
-
-
本地版本控制基本工作流程
-
初始化:在项目目录运行
git init命令,生成.git目录结构,完成版本库初始化。 -
暂存:
git add命令将工作区更改暂存。 -
提交:
git commit命令将暂存区更改提交到版本库,生成包含状态快照的commit(有commit name和commit id)。 -
检出:
git checkout命令将版本库中指定commit的状态反映到工作区。
-
(三)Git命令基础
-
命令格式:
git <command> <arguments> -
常用子命令
-
启动版本库:init(初始化)、clone(克隆远程仓库)、config(配置)。
-
暂存文件变动:add(添加文件到暂存区)、mv(移动或重命名文件)、rm(删除文件)。
-
查看状态:status(查看文件状态)、log(查看提交日志)、diff(对比文件变动)、grep(搜索)、show(查看提交详情)。
-
分支与合并:checkout(切换分支或检出文件)、branch(管理分支)、merge(合并分支)。
-
远程操作:push(推送本地更改到远程仓库)、fetch(抓取远程更改到本地版本库)、pull(拉取并合并远程更改到本地工作区)。
-
三、常用Git命令清单
一般来说,日常使用只要记住下图6个命令,就可以。
操作:
创建git管理用户并切换
初始化并测试拉取

添加当前目录的所有文件到暂存区
身份验证提交暂存区到仓库区

推送所有分支到远程仓库 其他用户可以拉取

四、GitLab相关
(一)GitLab简介
-
定位:Git远程存储库实现,支持代码仓库存储和远程访问;基于Ruby on Rails开发。
-
附加功能:代码共享、分支合并请求、错误跟踪等。
(二)GitLab部署
-
安装方法
-
Linux安装包(Omnibus GitLab):包含极狐GitLab和依赖组件(PostgreSQL、Redis、Sidekiq等)。
-
Helm Chart:在Kubernetes上安装。
-
Docker:容器化安装。
-
Source:源码安装(适用于无官方安装包的平台)。
-
GitLab Environment Toolkit(GET):自动化工具集,用于公有云(Azure、GCP、AWS)部署。
-
GitLab Operator:Kubernetes Operator风格部署。
-
-
前置配置(SMTP服务):安装postfix服务,编辑/etc/postfix/main.cf:
(三)GitLab工作流示例
-
团队内部协作
-
前提:创建devops组,添加用户tom(Developer)和jerry(Maintainer),创建项目devops/myapp。
-
工作流程:
-
tom克隆仓库:
git clone <remote-url>。 -
创建feature分支:
git checkout -b feature/tom。 -
开发并提交代码:
git add .→git commit -m "update pod.yaml"。 -
推送分支:
git push -uf origin feature/tom。 -
GitLab上创建MR:选择从feature/tom合并到main,指派给jerry。
-
jerry审核并合并:在GitLab的合并请求页面,确认无问题后合并,可选删除源分支、压缩提交。
-
-
-
基于Fork的协作
-
前提:用户biden fork devops/myapp到个人仓库biden/myapp。
-
工作流程:
-
biden克隆个人仓库:
git clone <biden-repo-url>。 -
添加upstream仓库:
git remote add upstream <devops-repo-url>。 -
拉取上游变更:
git fetch upstream→git merge upstream/main。 -
创建feature分支:
git checkout -b feature/biden。 -
开发并推送:
git add .→git commit -m "xxx"→git push origin feature/biden。 -
提交PR:指定源仓库biden/myapp、分支feature/biden,目标仓库devops/myapp、分支main。
-
维护者审核并合并:合并后biden拉取上游变更更新本地仓库。
-
-
安装gitlab
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el9/
gpgcheck=0
enabled=1
yum install -y gitlab-ce
注意:在openEuler中yum下载无法使用,可在rocky9中下载完成后导出到宿主机yum -y install gitlab --downloadonly。

目录:/var/cache/dnf/gitlab-xxxxxxxx/packages中 sz gitlab-ce-xxx.rpm 到指定宿主机目录
mv gitlab-ce-xxx.rpm /opt/ rpm -ivh gitlab-ce-xxx.rpm安装
修改配置:
vim /etc/gitlab/gitlab.rb
external_url '192.168.254.132'
gitalab_rails['time_zone'] = 'Asia/Shanghai'
gitlab-ctl reconfigure 加载配置,完成后gitlab-ctl start 启动服务 完成后可直接再浏览器访问服务ip使用gitlab。
获取初始密码:
cat /etc/gitlab/initial_root_password 登录用户:root
登陆后可进行修改密码、界面汉化和新建项目等操作。
修改密码:
创建项目:
添加密钥:
只有添加密钥后才能使工作端使用网络控制系统。
主节点生成ssh密钥:
页面找到ssh keys: 
下载gitlab项目:
上传文件:

随后便可在网页访问的gitlab中你的工作项目中查看文件,其他用户也可通过访问该网站查看该文件。

更多推荐

所有评论(0)