Linux高级运维: 版本控制 、 Git基础 、 Git进阶和RPM打包(OPERATION----DAY38)

版本控制

在这里插入图片描述
基本概念
版本库:典型的客户/服务器系统
–版本库是版本控制中心的核心
–任意数量客户端
–客户端通过写数据库分享代码

分布式版本控制

1)集中式版本控制系统
–开发者之间共用一个仓库(repository)
–所有操作需要联网
2)分布式版本控制系统
–每个开发者都是一个仓库的完整克隆,每个人都是服务器
–支持断网操作
3)Git基本概念
–Git仓库:保存所有数据的地方
–工作区:从仓库中提取出来的文件,放在磁盘上供你使用或修改
–暂存区:就是一个文件,索引文件,保存了下次将提交的文件列表信息
工作流
在这里插入图片描述

常用软件

集中式版本控制软件
–CVS
–SVN(Subversion)
分布式版本控制软件
–Git
–Bitkeeper(收费)
-+++++++++++++++++++++++++++++++++++±---------------------------

Git基础

在这里插入图片描述

服务器设置

安装Git软件
[root@svr5 ~]# yum -y install git
[root@svr5 ~]# git --version
git -version 1.8.2.1

创建服务器版本仓库

服务器是一台多人协作的中心服务器
– init初始化一个空仓库(没有具体数据)
在这里插入图片描述

客户端操作

客户端访问方式
–本地访问:git clone file:///var/git
–远程ssh访问:git clone root@服务器IP:/var/git
–web:服务器需要额外的配置Web服务器;客户端可以浏览器访问;git clone http://服务器IP/git仓库;Git clone https://服务器IP/git仓库。

客户端命令行工具

git支持的子命令操作:
– clone 将远程服务器的仓库克隆到本地
–config 修改git配置
–add 添加修改到暂存区
–commit 提交修改到本地仓库
–push 提交修改到远程服务器

Clone克隆服务器仓库到本地

在这里插入图片描述

config修改git配置

客户端用户标记信息(跟Git账户和密码无关)
在这里插入图片描述

导入数据,add提交本地暂存区

提示:必须进入工作目录git操作
在这里插入图片描述

commit提交本地仓库

在这里插入图片描述

push将本地修改提交远程服务器仓库

push.default定义如何推送(更安全地推送)
在这里插入图片描述

从远程下载使用pull命令

–git pull

log查看历史日志

在这里插入图片描述

Windows客户端软件

需要安装git和tortoise
在这里插入图片描述
-------------------------++++++++++++++++++++++++++++++++++++++++++++±-------------------

Git进阶

在这里插入图片描述
HEAD指针概述
–HEAD指针是一个可以在任何分支和版本移动的指针
–通过移动指针我们可以将数据还原至任何版本
在这里插入图片描述

移动HEAD指针

先使用log指令查看版本信息
在这里插入图片描述
我们需要回到bde26这个版本
[]root@client1 git]# git reset --hard bde26
HEAD现在位于bde26d2 add a.txt file
在使用ls查看当前工作目录的资料已经还原
[]root@client1 git]# ls
使用HEAD^将版本回滚一个版本
[]root@client1 git]# git reset --hard HEAD^
HEAD现在位于5ec6b76 test
使用HEAD~数字,可以将版本回归n个版本
[]root@client1 git]# git reset --hard HEAD~2
HEAD现在位于bde26d2 add a.txt file
默认log仅显示当前到之前的版本信息,–all查看所有在这里插入图片描述

Git分支

分支的基本概念:分支可以让开发分多条主线同时进行,每条主线互不影响
–按功能模块分支、按版本分支
–分支也可以合并
在这里插入图片描述

常见的分支规范

–MASTER分支(MASTER是主分支,是代码的核心)
–DEVELOP分支(DEVELOP最新开发成果的分支)
–RELEASE分支(为发布新产品设置的分支)
–HOTFIX分支(为了修复软件BUG缺陷的分支)
–FEATURE分支(为开发新功能设置的分支)

管理多分支

查看当前分支
[root@client1 git]# git status
#位于分支 master
无文件要提交,干净的工作区
[root@client1 git]# git branch -v

  • master 470f049

创建分支

[]root@client1 git]# git branch hotfix
[]root@client1 git]# git branch feature
[]root@client1 git]# git branch -v
feature 470f049
hotfix 470f049

  • master 470f049

切换分支

[root@client1 git]# git checkout hotfix
切换到分支 ‘hotfix’
[root@client1 git]# git branch -v
feature 470f049
*hotfix 470f049
master 470f049
在新的分支上就可以继续修改代码
–修改文件、创建文件等操作
–正常add,commit提交版本库

将hotfix合并到master分支

合并前,一定要切换到master分支;执行merge命令合并分支
[root@client1 git]# git checkout master
切换到分支 ‘master’
[root@client1 git]# git merge hotfix
更新 470f049…79d0ec1
Fast-forward
a.txt | 1 +
bug.txt | 1 +
2 file changed, 2 insertions(+)
create mode 100644 bug.txt

解决分支冲突

修改了不同的分支中相同的文件的相同行
– 系统无法合并分支,产生了冲突
在这里插入图片描述
在这里插入图片描述

Git服务器

ssh协议

密码认证访问
–服务器安装Git
–使用Git命令初始化版本仓库
–客户端使用ssh远程访问(可读写权限)
[root@client1 git]# git init /var/git --bare
[root@client1 git]# ls /var/git/
[root@client1 git]# git clone root@服务器IP:/var/git
正克隆到“git”…
root@服务器IP‘s password: <需要输入密码>

免密码远程Git服务器(密钥授权)

客户端生成ssh密钥
[root@client1 git]# ssh-keygen -f /root/.ssh/id_rsa -N "
将密钥拷贝给Git服务器
[root@client1 git]# ssh-copy-id Git服务器IP地址
测试上传、上传代码到远程服务器
[root@client1 git]# git clone root@服务器IP:/var/git
[root@client1 git]# git push

Git协议

Git协议访问支持无授权访问(只读)
服务器安装git-daemon软件包
[root@svr5 git]# yum -y install git-daemon
服务器初始化仓库(必须要在/var/lib/git/目录创建仓库)
[root@svr5 git]# git init --bare /var/lib/git/project
服务器启动Git服务
[root@svr5 git]# systemctl restart git.socket
客户端使用git协议访问(只读)
[root@svr5 git]# git clone git://服务器IP//project

HTTP协议

支持浏览器访问
–服务器安装gitweb软件包
[root@svr5 git]# yum -y install httpd gitweb
修改配置文件,设置仓库根目录
[root@svr5 git]# vim +11 /etc/gitweb.conf
$projectroot="/var/lib/git" #添加一行
启动httpd服务
[root@svr5 git]# systemctl restart httpd
[root@client ~]# firefox http://服务器IP/git/
---------------------------------+++++++++++++++++++++++++±-----------------------

GitHub

简介:GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名GitHub。
GitHub于2008年4月10月正式上线
-------------------++++++++++++++++++++++++++++++++±--------------------------+++++++++++++++++++±-----------

RPM打包

在这里插入图片描述

基本概念

应用场景
–官方未提供RPM包
–官方RPM无法自定义
–大量源码包,希望提供统一的软件管理机制

打包流程

准备源码包软件
安装rpm-build
编写编译配置文件
编译RPM包

编译打包RPM的命令工具

在这里插入图片描述
将源码包复制到rpmbuild子目录在这里插入图片描述

编写编译配置文件

新建SPEC文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编译RPM包

使用spec文件编译RPM包
在这里插入图片描述

-++++++++++++++++++++++++++++++++++++±--------------------+

无法提交代码

问题现象
故障错误信息在这里插入图片描述

原因分析

分析故障信息
– fatal: Not a git repository (or any of the parent directories): .git
分析故障原因
–没有进入代码仓库就执行了add指令
–Git指令必须在git仓库中操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值