01-DevOps代码上线-git入门及gitlab远程仓库

一、准备学习环境

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了。合并成功

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

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

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

相关文章

【Sql Server】存储过程的创建和使用事务,常见运用场景,以及目前现状

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

即插即用篇 | YOLOv8 引入 ParNetAttention 注意力机制 | 《NON-DEEP NETWORKS》

论文名称:《NON-DEEP NETWORKS》 论文地址:https://arxiv.org/pdf/2110.07641.pdf 代码地址:https://github.com/imankgoyal/NonDeepNetworks 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yaml

DEAP:利用生理信号进行情绪分析的数据库【DEAP数据集】

文章目录 摘要引言刺激选择实验环境参与者步骤参与者自我评估 主观评价分析EEG频率与参与者评分之间的相关性单次试验分类结果 结论 点击下载原文 摘要 ● DEAP:用于分析人类情感状态的多模态数据集。 ● 32名参与者观看了40个一分钟长的音乐视频。 ● 参与者根据唤…

C++ 标准库类型string

C/C总述:Study C/C-CSDN博客 目录 定义和初始化string对象 string的增 使用push_back进行尾插 使用insert插入 使用append函数完成string的拼接 string的删 使用pop_back进行尾删 使用erase删除 string的查 使用find函数正向搜索第一个匹配项 使用rf…

登录校验认证

会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪: 一种维护浏览器状态的方法,服务器需要识别多次请…

position定位学习

加了绝对定位的盒子不能通过margin:0 auto水平居中 脱标元素不会产生外边距合并问题

树莓派(Raspberry Pi)常见的各种引脚介绍

本文将为您详细讲解树莓派(Raspberry Pi)常见的各种引脚,以及它们的特点、区别和优势。树莓派是一款非常受欢迎的单板计算机,它拥有多个 GPIO(通用输入输出)引脚,这些引脚可以用于各种电子项目和…

Linux mmap系统调用

文章目录 前言一、mmap()函数简介二、代码演示2.1 mmap使用场景2.2 私有匿名映射2.3 私有文件映射2.4 共享匿名映射2.5 共享文件映射 参考 前言 NAMEmmap, munmap - map or unmap files or devices into memorySYNOPSIS#include <sys/mman.h>void *mmap(void *addr, siz…

java 数据结构二叉树

目录 树 树的概念 树的表示形式 二叉树 两种特殊的二叉树 二叉树的性质 二叉树的存储 二叉树的基本操作 二叉树的遍历 二叉树的基本操作 二叉树oj题 树 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次…

Type-C接口PD协议统一:引领电子科技新纪元的优势解析

在电子科技日新月异的今天&#xff0c;充电接口的统一化已经成为了业界的一大趋势。其中&#xff0c;Type-C接口凭借其传输速度快、使用便捷等优点&#xff0c;迅速成为了市场上的主流选择。而PD&#xff08;Power Delivery&#xff09;协议的统一&#xff0c;更是为Type-C接口…

黑马点评-好友关注实现

关注和取关 针对用户的操作&#xff0c;可以对用户进行关注和取消关注功能&#xff1a; 需要实现两个接口&#xff1a; 关注和取关接口 判断是否关注的接口 接口&#xff1a; //关注和取关 PutMapping("/{id}/{isFollow}") public Result follow(PathVariable(&…

Day25:安全开发-PHP应用文件管理模块包含上传遍历写入删除下载安全

目录 PHP文件操作安全 文件包含 文件删除 文件编辑 文件下载 云产品OSS存储对象去存储文件(泄漏安全) 思维导图 PHP知识点 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框…