1、版本控制系统介绍( VCS - Version Control System )
版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
- 记录文件的所有历史变化
- 随时可恢复到任何一个历史状态
- 多人协作开发或修改
- 错误恢复
- 多功能并行开发 eg: 分支、合并
版本控制系统分类:1、本地版本控制系统(Local VCS)eg:RCS (Revision Control System) (linux system 常见)
优点:
- 简单,很多系统中都内置
- 适合管理文本文件 eg: 配置文件 ,doc 等
缺点:
- 只适合管理少量文件,不支持基于项目的管理
- 支持的文件类型较单一
- 不支持网络,无法实现多人协作
2、 集中化版本控制系统(Centralized VCS) eg : CVS (Concurrent Version System ) 、 Subversion
优点:
- 适合多人团队协作开发
- 代码集中化管理
缺点:
- 单点故障
- 必须联网操作,无法单机本地工作
3、分布式版本控制系统(Distributed VCS) eg: Git 、 Mercurial
优点:
- 适合多人团队协作开发
- 代码集中化管理
- 可以离线工作
- 每个计算机都是一个完整仓库 强备份,避免单点故障
版本控制系统基本概念:
- repository - 存放所有文件及其历史信息
- checkout - 取出或切换指定版本的文件
- version - 记录标识一个版本(编号或其他代码)
- tag - 记录标识一个主要版本(1.0、2.0、3.0) eg : 里程碑记录
2、Git版本控制系统 Git : 饭桶
Git 是一个分布式版本控制系统,Git最初开发是为了取代BitKeeper,由Linux 创始人 Linus Torvalds 开发,作为Linux 内核代码管理系统使用。
Git 设计时考虑了很多方面,除了分布式版本控制系统的优点外,还考虑了以下设计目标,这些目标都成为了Git的优点:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许上千个并行开发的分支)
- 完全分布式
- 有能力高效管理类似Linux内核一样的超大模式项目(速度和数据量)
为何取名“Git””
"I‘m an egotistical bastard,and I name all my projects after myself,First ‘Linux’,now 'Git'’"--Linux Torvalds
Git 原理 - 快照,而非保存区别
每一种版本控制系统都用一种办法追踪不同阶段的变化
- 文件的鉴别和操作
几乎所有操作都是在本地执行
通过校验和算法识别文件变化
- Git 使用SHA - 1 算法对文件内容或目录进行哈希运算,用得出的校验值作为识别变化的指纹,如 2324usef34893882929
多数操作均为添加操作
Git 原理 - 文件状态及工作区域
- Git repository最终确定的文件保存到仓库 ,成为一个新的版本,并且对他人可见
- Staging area (index)暂存已经修改的文件
- Working Directory 编辑、修改文件