版本控制
基本概念
版本库
典型的客户/服务器系统
- 版本库是版本控制的核心
- 任意数量客户端
- 客户端通过写数据库分享代码
分布式版本控制
集中式版本控制系统
- 开发者之间公用一个仓库(repository)
- 所有操作需要联网
分布式版本控制系统
- 每个开发者都是一个仓库的完整克隆,每个人都是服务器
- 支持联网操作
分布式版本控制
Git基本概念
Git仓库:
保存所有数据的地方
工作区:
从仓库中提取出来的文件,放在磁盘上供你使用或修改
暂存区:
就是一个文件,索引文件,保存了下次将提交的文件列表信息
工作流
常用软件
版本控制软件
集中式版本控制软件
- CVS
- SVN(Subversion)
分布式版本控制软件
- Git
- BitKeeper(收费)
Git基础
服务器设置
客户端操作
客户端访问方式
本地访问
-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 提交修改到远程服务器
Git进阶
HEAD指针
HEAD指针概述
- HEAD指针是一个可以再任何分支和版本移动的指针
- 通过移动指针我们可以将数据还原至任何版本
移动HEAD指针
先使用log指令查看版本信息
Git分支
分支的基本概念
分支可以让开发分支、按版本分支
- 按功能模块、按版本分支
- 分支也可以合并
基本的分支概念
常见的分支规范
- MASTER分支(MASTER是主分支,是代码的核心)
- DEVELOP分支(DEVELOP最新开发成果的分支)
- RELEASE分支(为发布新产品设置的分支)
- HOTFIX分支(为了修复软件BUG缺陷的分支)
- FEATURE分支(位开发新功能设置的分支)
管理多分支
查看当前分支
git status
#位于分支master
无文件要提交,干净的工作区
git branch -v
* master 470f049
创建分支
git branch hotfix
git branch feature
git branch -v
切换分支
git checkout hotfix
在信息分支上就可以继续修改代码
- 修改文件、创建文件等操作
- 正常add,commit提交版本库
将hotfix合并到master分支
- 合并前,一定要切换到master分支
- 执行merge命令合并分支
解决分支冲突
修改了不同分支中相同文件的相同行
-系统无法合并分支,产生了冲突
分支与HEAD指针的关系
创建分支的本质是在当前提交上创建一个可以移动的指针
如何判断当前分支呢?
切换分支只是移动HEAD指针
testing分支的提交,不会影响master
master也不影响testing分支
Git服务器
ssh协议
密码认证访问
- 服务器安装git
- 使用git命令初始化版本仓库
- 客户端使用ssh远程访问(可读写权限)
RPM打包
应用场景
- 官方未提供RPM包
- 官方RPM无法自定义
- 大量源码包,希望提供统一的软件管理机制
软件打包
打包流程
- 准备源码软件
- 安装rpm-build
- 编写编译配置文件
- 编译RPM包
安装rpm-build
编译打包RPM的命令
准备编码软件