一、准备学习环境

10.0.0.71-gitlab            2c2g-20GB

10.0.0.72-jenkins         2c2g-20GB

10.0.0.73-sonarqube   1c1g-20GB

10.0.0.74-nexus          1c1g-20GB

10.0.0.75-dm               1c1g-20GB   (模拟写代码服务器)

        在centos系统中,本身就有git,如果没有yum安装一下git

[root@gitlab ~]# git --version
git version 1.8.3.1

二、git的使用

1,模拟一个代码目录

[root@gitlab ~]# mkdir -pv /xinjizhiwa/git_student 
[root@gitlab ~]# cd /xinjizhiwa/git_student

2,对代码目录进行git初始化

        你想要使用git,就需要先有一个git仓库,用来存放代码,所以,需要初始化出一个git仓库,初始化之后,该目录才成为【git本地仓库】

· 配置git本地仓库

用户名、用户邮箱、代码状态颜色开启

[root@gitlab git_student]# git config --global user.name 'xinjizhiwa'
[root@gitlab git_student]# git config --global user.email '626080079@qq.com'
[root@gitlab git_student]# git config --global color.ui true

· 查看git仓库配置信息

[root@gitlab git_student]# git config --list

· 初始化git本地仓库

[root@gitlab git_student]# git init

查看本地隐藏目录,有了【.git】就证明初始化成功了!~

至此,初始化git本地仓库,就完成了!~

3,代码的上线流程

        本地仓库的代码,有三种状态;

        只有提交到【本地仓库】的代码;才能够被推送到【远程仓库】;

· 模拟写一个代码

[root@gitlab git_student]# echo 'xinjizhiwa-v1.0' > xinjizhwa.txt

· 查看此时仓库的状态

        会看到一个【红色】的我们写的代码文件,证明是“草稿阶段”的代码;

[root@gitlab git_student]# git status

· 将代码提交到暂存区

[root@gitlab git_student]# git add .

再次查看代码状态,发现“它绿了”,就证明该代码,已经被提交到了【暂存区】;

· 将代码提交到本地仓库

        将暂存区的代码,提交到【本地仓库】,同时写个备注信息“v1.0”

[root@gitlab git_student]# git commit -m 'v1.0'

再次查看git仓库状态,什么都没有了~就证明,我们提交代码到【本地仓库】成功了;

[root@gitlab git_student]# git status

此时,代码提交到本地仓库,就完成了;

4,代码回滚

        在正常的工作当中,我们有一种极端情况,就是,代码写错了,但是,不小心还提交到了代码本地仓库,怎么办呐?这就涉及到了我们接下来的知识点,代码回滚;

· 查看下本地的代码文件

· 再重新编辑代码文件

追加一段代码到代码文件中,模拟,代码新版本;

[root@gitlab git_student]# echo 'xinjizhiwa-v2.0' >> xinjizhwa.txt

· 查看仓库状态

[root@gitlab git_student]# git status

发现代码文件的状态,又红了!~说明代码有修改,并还是草稿阶段;

· 将代码提交到本地仓库

[root@gitlab git_student]# git add .
[root@gitlab git_student]# git commit -m 'v2.0'

· 【重点】查看本地代码的版本

就是查看我们一共有多少个版本的代码;

[root@gitlab git_student]# git reflog

拓展:其实【git  reflog】是简写版本信息,想要显示全称,直接使用【git  log】

· 查看此时的代码

·【重点】回滚到指定版本

目前代码有两个版本,v1.0和v2.0;我们将代码回溯到v1.0;

[root@gitlab git_student]# git reset --hard 716ea3c

· 验证查看代码信息

        发现代码信息,内容中,回到了1.0的状态;

此时,在查看版本,发现,版本成了三个,有两个是用了一个id号,就证明,我们的过程是回溯的;

至此,我们的本地仓库的代码回滚,就学习完毕了;

5,git本地仓库分支branch

        由于开发一个项目,并不是一个人来完成的,需要研发团队的配合,于是,就有了“分支”的概念,用于院队研发协作使用;

        一般情况下,研发阶段端的代码,同属于一个分支,当项目开发结束后,会提交为一个master分支,作为已完成的项目提交。

· 查看当前代码的分支

[root@gitlab git_student]# git branch

可以看到,git仓库默认将代码都在master分支上;【*】代表当前所在的分支;

· 创建一个分支

创建一个叫xinjizhiwa的分支;

[root@gitlab git_student]# git branch xinjizhiwa

再次查看分支

· 切换当前分支

[root@gitlab git_student]# git checkout xinjizhiwa

· 在新的分支下修改代码

[root@gitlab git_student]# echo 'xinjizhiwa-v3.0' >> xinjizhwa.txt

提交代码到本地仓库

[root@gitlab git_student]# git add .
[root@gitlab git_student]# git commit -m 'v3.0'
[root@gitlab git_student]# cat xinjizhwa.txt 
xinjizhiwa-v1.0
xinjizhiwa-v3.0

· 切换回master查看代码

        你会发现,两个分支中的代码,是不一样的;

[root@gitlab git_student]# git checkout master

· 将分支代码合并

        就是将xinjizhiwa分支上的代码,合并到当前master分支上;

[root@gitlab git_student]# git merge xinjizhiwa

此时查看代码,master分支也是最新的代码了;

至此,git本地仓库的分支,就学习完毕了;

三、自建远程仓库gitlab

1,安装部署gitlab远程仓库

· 下载gitlab软件包

本次学习,为了大家方便,给大家准备了软件包在百度云盘;

链接:https://pan.baidu.com/s/1PM_QIkTaBGFUPRy0Ybw45Q?pwd=6vc2 
提取码:6vc2

· 上传安转软件包

[root@gitlab ~]# rz -E
[root@gitlab ~]# yum -y localinstall gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm

· 修改gitlab的配置文件

[root@gitlab ~]# vim /etc/gitlab/gitlab.rb 
external_url 'http://gitlab.xinjizhiwa.com'
gitlab_rails['smtp_enable'] = false
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
prometheus_monitoring['enable'] = false

· 重启gitlab

[root@gitlab ~]# gitlab-ctl reconfigure

· 查看gitlab状态

[root@gitlab ~]# gitlab-ctl status | column -t

拓展:column  -t  表示列对齐;

2,gitlab浏览器页面操作

· 浏览器访问

注意,先本地hosts解析;

gitlab.xinjizhiwa.com

账号:root

密码:

查看密码

[root@gitlab ~]# cat /etc/gitlab/initial_root_password

· 汉化页面

【点击头像】-【preferences】

【Localization】-【langusge】-【chinsese】-【save change】-【刷新页面】

汉化成功

· 修改gitlab的密码

3,正式使用gitlab

· 创建项目

选择创建空白项目

· 查看项目列表

【点击logo】-【项目】就可以看到刚刚创建的项目了;

4,本地仓库连接远程仓库gitlab

· 生成linux本地秘钥

[root@gitlab ~]# ssh-keygen -t rsa -C 626080079@qq.com

#一路回车

· 复制本地秘钥-公钥

[root@gitlab ~]# cat /root/.ssh/id_rsa.pub

· 粘贴公钥到gitlab

· 本地添加远程仓库

[root@gitlab git_student]# git remote add origin git@gitlab.xinjizhiwa.com:gitlab-instance-ffdef71f/xinjizhiwa-web.git

· 查看本地的远程仓库列表

[root@gitlab git_student]# git remote -v

推送前,虚拟机也需要本地解析hosts,不然识别不了假域名

· 推送代码到远程仓库

推送master分支到远程仓库;

[root@gitlab git_student]# git push -u origin "master"

· 页面查看是否有这个分支和代码

5,git的标签

· 给当前分支创建标签

[root@gitlab git_student]# git tag -a "v1.0" -m "v1.0"

· 推送标签代码到远程仓库

[root@gitlab git_student]# git push -u origin --tag v1.0

6,gitlab的用户管理

        为了对企业当中的分属不同部门,不同人员的操作权限,gitlab给出了用户和用户组的功能。

· 创建用户

【点击目录】-【管理员】-【用户】

【点击新用户】

编辑新用户信息

【点击创建】

点击【编辑】

设置密码

· 创建用户组绑定用户

【目录】-【管理员】-【群组】-【新建群组】

设置名称-【保存】

【管理权限】

【邀请用户】

· 创建一个新项目

新建项目,绑定群组

· 新用户的主机免秘钥登录gitlab

生成秘钥

[root@dm dev]# ssh-keygen -t rsa -C xinjizhiwa@qq.com

复制秘钥公钥

开发新用户的集群,ssh免秘钥登录gitlab

· 新用户的主机本地解析一下假域名

· root用户主机推送代码到新项目

root用户添加项目到本地git

[root@gitlab git_student]# git remote  add  origin02 git@gitlab.xinjizhiwa.com:xinjizhiwa/xinjizhiwa-dev.git

root推送代码到新仓库

[root@gitlab git_student]# git push -u origin02 "master"

· 开发用户拉取gitlab仓库的项目代码

[root@dm dev]# git config --global user.name 'xinjizhiwa-dev'
[root@dm dev]# git config --global user.email 'xinjizhiwa@qq.com'
[root@dm dev]# git config --global color.ui true
[root@dm dev]# git config --list
user.name=xinjizhiwa-dev
user.email=xinjizhiwa@qq.com
color.ui=true

拉取仓库代码到本地

[root@dm dev]# git clone git@gitlab.xinjizhiwa.com:xinjizhiwa/xinjizhiwa-dev.git

进入代码目录

[root@dm dev]# cd xinjizhiwa-dev/

· 子账号模拟修改代码

[root@dm xinjizhiwa-dev]# echo "xinjizhiwa-v4.0" >> xinjizhwa.txt

提交修改好的代码到本地仓库

[root@dm xinjizhiwa-dev]# git add .
[root@dm xinjizhiwa-dev]# git commit  -m "v4.0" 

合并默认的master代码到xinjizhiwa分支

[root@dm xinjizhiwa-dev]# git branch xinjizhiwa
[root@dm xinjizhiwa-dev]# git branch 
* master
  xinjizhiwa
[root@dm xinjizhiwa-dev]# git checkout xinjizhiwa 
[root@dm xinjizhiwa-dev]# git merge master 
[root@dm xinjizhiwa-dev]# cat xinjizhwa.txt 
xinjizhiwa-v1.0
xinjizhiwa-v3.0
xinjizhiwa-v4.0

· 子账号推送代码到项目远程仓库

[root@dm xinjizhiwa-dev]# git push -u origin "xinjizhiwa"

· 登录新用户请求合并

· 再登录root合并代码

合并过后,你会发现,就剩下master了。合并成功

那么至此,项目组(群组),合并提交代码到远程仓库,管理员审核代码并合并成功,整套流程学习完毕了。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐