版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决
版本控制工具所具备的功能:
- 协调开发与修改
多人开发或修改服务端同一个文件,互不影响,但又相互有所关联
- 数据备份:
不仅保存文件与目录的当前状态,同时还保留历史、迭代
- 版本控制
节约空间、提高效率,在保存每一个版本的文件信息的同时不保存重复数据。
- 权限控制
对团队中开发人员进行权限控制
对团队外开发者所提交内容进行审核(Git独有)
- 历史记录
查看修改者、修改内容、日志信息等
具有将版本任意恢复到历史状态,快速开发、迭代
- 分支管理
允许开发团队在工作中多条生产线同时推进任务,进一步提高效率
Git简介
Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理任意类型的项目。Git易于学习,占用空间小,性能极快。它比Subversion、CVS、Perforce和ClearCase等SCM工具具有廉价的本地分支、方便的暂存区和多个工作流等特性。
Git工作流:
在项目开发中使用Git的方式
单机式:
优点:
- 简单,很多系统中都有内置;
- 适合管理文本,如系统配置;
缺点:
- 管理少量文件,不支持项目的管理;
- 支持的文件类型单一;
- 不支持远程,网络传输;
集中式:
以中央仓库作为项目所修改的单点实体,所有的编辑修改都提交到主分支上
优点:
- 适合多人团队协作开发;
- 代码集中化管理;
缺点:
- 单点故障;
- 必须联网,无法单机工作;
Git Flow:
“功能驱动式开发”(Feature-driven development,简称FDD)。主要体现为通过为功能开发、发布准备、维护、修改、检查为其建立独立的分支,让其迭代过程更为流畅。
优点:
- 灵活
- 适合多人团队协作功能开发
- 代码分布式化管理;
缺点:
- 架构复杂
- 容易冲突
GitForking:
建立在git flow的基础上,充分使用了git中的fork、pull request以达代码审核的目的
如何理解?个人感悟
以大自然中的树(一颗)比喻,形象化以助于理解。除了唯一主干(树根)外其他都是多分叉的
单机:树根 <- 树干
集中式:树根 <- 树干 <- 树枝
Git Flow:树根 <- 树干 <- 树枝 <- 树杈
Git Forking:树根 <- 树干 <- 树枝 <- 树杈 <- 树叶