通过本次的学习,基本了解了版本控制基本概念,以及其中涉及到的集中控制和分布式控制两大分类,以及每个分类的基本原理,优缺点,以及svn和git代表
一、版本控制基本概念
1.1、是指对软件开发过程中各种程序代码,配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
1.2、主要功能就是追踪文件的变更,它将什么人,在什么时候更改了文件的什么内容等信息忠实的记录下来。会通过文件版本号
1.3、主要包括如下操作
1.3.1、检入检出控制
检入就是把软件配置项从用户的工作环境存入到软件配置库的过程,检出就是把软件配置项从软件配置库中取出的过程,检入是检出的逆过程,同步控制可用来确保有不同人并发执行的修改不会产生混乱。
1.3.2、分支和合并
版本分支(以一个已有分支的特定版本为起点,但是独立发展的版本序列),有主干复制一份并做上标记;版本合并,来自两个不同分支的两个版本合并作为其中一个分支的新版本)有两个途径,一种是将版本a中内容复制到b,第二种是 a和b的版本内容合并,形成版本c版本
1.3.3、历史记录
方便对软件配置项进行审核,有助于追踪问题
二、版本控制分类
2.1、集中化的版本控制系统
- 存在一个中央版本库,所有开发人员本地开发使用的代码都是来自这个版本库。用户本地不会存储历史记录
- 优点:代码存放在单一的服务器上,便于项目的管理
- 缺点:服务器宕机,代码得不到保障;服务器硬盘损坏,这个项目的历史记录都会丢失
2.1.1、代表者svn
工作流程:
- 在中央版本库中创建一个项目,项目中包含主干和分支,分支是从主干复制的。
- 开发人员从中央版本库check out下这个分支的代码。
- 本地增加自己的代码,修改或删除现存的代码。
- commit 代码前,需要先更新代码到自己本地,然后之后在提交,如果出现冲突,则需要处理冲突问题。
- 测试环境测试,解决问题之后合并到主干中,在之后更新生产环境代码。
2.2、分布式的版本控制系统
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的仓库。
- 优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。 - 缺点
资料少
学习周期相对而言比较长
不符合常规思维
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
2.2.1、代表者git
git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,没有中央版本库说法,
开发者本地有一个完整的git仓库,但是实际使用中需要建立一个远程的git 仓库,以方便共享代码和版本控制。
git工作流程
- 本地创建一个git库,并将其add到远程git苦衷。
- 在本地添加、删除、修改文件,然后commit,此时commit是提交到本地git仓库中。
- 将本地git库分支push到远程git库的分支,如果此时远程已经有别人push过,那远程git将允许你push,必须先pull(这里强烈建议使用forch+mergh)防止出现冲突的问题,