一、版本控制工具的作用和必要性
版本控制工具的作用:帮助我们记录和跟踪项目中各文件内容的修改变化。
记录文件修改的手工做法:复制文件以备份,在备份的文件名中添加上日期和时间。
需要版本控制工具的原因:为了提高效率,我们希望这类操作是自动进行的,这是我们需要版本控制工具的原因。  
二、版本控制工具的分类
版本控制工具(Version Control System)的分为3类:
1、直接访问式版本控制系统;
2、集中式版本控制工具,比如CVS、SVN;
3、分布式版本控制工具,比如git      
集中式版本控制工具和分布式版本控制工具的区别在于:开发人员之间相互同步修改内容的方式不同。
三、版本控制工具的发展历程
VCS的发展历程:
(1)、手工阶段,没有版本控制工具或者有但是不用版本控制工具。
(2)、早期VCS阶段:             
这类系统要求系统的用户必须登录到版本库所在的服务器才能访问版本库。            
局限性:存在可扩展性方面的问题。
(3)、集中式VCS阶段:            
CVS和SVN解决上述早期版本控制工具的可扩展性问题。这类版本控制工具允许程序员通过网络来获取版本库中的代码,并且在修改之后提交回来。这类系统解决可扩展性问题是通过客户端来解决的,客户端可以有无数个,但是版本库所在的服务端也还是只有一个,客户端可以随意安装,这样就解决了可扩展性的问题。           
具体的使用方法:每一个程序员在本地有一个工作目录树,其内容是该版本库中最新的代码。当他们在工作目录树中完成代码修改之后,就把改动提交会该代码库。           
局限性:在本地工作目录树中只会看到代码的最新版本,如果想要查询历史修改记录,就必须与服务器上的版本库打交道。这样要和远程的版本库打交道,就必须使用网络,但是即使今天的互联网处于永不断线的状态,有的时候还是不能上网。所以分布式版本控制工具就解决了这个问题,以git为代表的分布式版本控制工具使每个用户在本地都有自己的版本库,而不是连接到公共服务器上的一个公共版本库中去。
(4)、分布式版本控制工具阶段:           
所有的版本控制工具都存储在本地版本库中,向版本库提交代码无需链接远程版本库,所有的历史记录都存储在本地版本库中,向版本库提交代码无须连接远程版本库,而是所有的版本数据都存放在本地版本库中。          
分布式版本控制工具程序员之间如何传递各自的修改,如何同步呢?程序员还是将修改上传到项目的主版本库中去。
有两种实现方式:(1)通过git的push操作直接把修改上传到主版本库;(2)生成包含少量修改的补丁包,把补丁包提交给项目维护人员,再由项目维护人员更新主版本库。  
四、选择版本控制工具时值得注意的问题
首先、版本控制工具它本身是一个工具,工具是比人工先进一些,但是我们依然可以选择使用它,也可以选择不使用它。          
比如在学校的时候一直就没有使用过版本控制工具,写论文、写代码都是在自己电脑上保存,每当自己写的东西有一个新版本产生的时候,就用另存为来再存一份。  
其次、不要因为盲目比较版本控制工具的优劣。          
即使使用了版本控制工具,也还有不同的版本控制工具之分,有比较早期的cvs、svn,也有最新的git,我们在选用的时候可以按照自己的想法,熟悉什么就选用什么,没有必要一味线性的看待问题,即不用觉得git一定比svn先进,所以使用git就比使用svn好,同样,不要以为使用git就比使用svn高级之类的,能解决问题就好,理智看待这个问题。

转载于:https://www.cnblogs.com/zhangzl419/p/4280202.html

版本控制工具的必要性、作用、分类和发展历程相关推荐

  1. CNN经典分类网络发展历程GoogLeNet、SqueezeNet、ResNet、ResNeXt、DenseNet

    本篇博文主要介绍2015年之后出现的经典分类网络的发展历程,前期经典分类网络网上有很多解析,主要包括LeNet.AlexNet.VGG等. 本篇博文主要介绍GoogLeNet.SqueezeNet.R ...

  2. 2020年中国热交换器行业分类、发展历程、现状及主要生产厂商分析「图」

    一.热交换器行业概况 热交换器又称为换热器,是指具有不同温度的流体之间传递热量的中介设备.热交换器是实现化工生产环节热量交换.传递和储能不可或缺的设备.纵观热交换器行业的发展,可分为以下几个阶段: 热 ...

  3. 历史回顾,各种编程工具的应用与我的发展历程之二(VB)

    VB是我接触的第一个图形化设计的工具,接触之后就被她简洁的可视化操作和强大的功能深深吸引. 在接下来的日子里,我不断学习VB编程,开发了一个又一个的小工具,如购物日记系统(记录每天的开支消费).多功能 ...

  4. Java虚拟机(二)—主流Java虚拟机分类及发展历程

    文章目录 Sun Classic VM Exact VM Hotspot VM JRockit VM IBM J9 VM KVM和CDC/CLDC Hotspot Azul VM .Liquid VM ...

  5. Java微信公众号开发(五)—— SVN版本控制工具

    1  作用 两个疑问: 什么是版本控制? 为什么要用版本控制工具? 作用: 受保护 受约束 合作开发中,版本控制工具更重要的作用就是让开发者更好地协作,每个人的代码既能互相调用,来共同完成一个较大的功 ...

  6. 自动调制分类发展历程

    作为一名即将进入研究生阶段的学生,将机器学习用于自动调制分类的发展历程整理如下,供今后参考学习之用,深入了解之人大可莞尔.                           机器学习用于信号自动调制 ...

  7. OpenCV简介、OpenCV的发展历程

    OpenCV简介.OpenCV的发展历程 近年来,人工智能是伴随着科技发展出现的一个重要词汇,全球多个国家提出了发展人工智能的规划方案.我国也在大力发展人工智能,众多高校也纷纷成立了关于人工智能的学院 ...

  8. 版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类

    版本控制工具 版本控制VCS(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以 ...

  9. 版本控制工具(CVS、SVN、GIT)简介

    2019独角兽企业重金招聘Python工程师标准>>> 版本控制工具:  提供完备的版本管理功能,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基 ...

最新文章

  1. 自定义DateField,带时分秒
  2. 「JOI 2016 Final」断层
  3. Zuul spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL解决方案
  4. NDK android Error:Expected caller to ensure valid ABI: MIPS
  5. 作业3-6 查询水果单价
  6. struts2文件上传中,如何限制上传的文件类型
  7. [jQuery] 你有写过jQuery的扩展吗?都有哪些写法?
  8. 在Controller中使用AOP
  9. 明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype...
  10. 中国餐馆过程(Chinese restaurant process)
  11. python人工智能入门优达视频_python入门视频教你搭建机器学习Python环境的正确姿势...
  12. PHP 7.3 比 PHP 7.0 快 22%,即将进入特性冻结阶段
  13. 从功能测试到接口测试,原来的技能可以通用
  14. 13.地区设置(Locale Settings)
  15. 安卓TV开发(前言)— AndroidTV模拟器初识与搭建
  16. CAD学习笔记中级课【参数化】
  17. android 遥控器方向,最简单DIY基于Android系统的万能蓝牙设备智能遥控器
  18. php小说阅读例子,Thinkphp掌上阅读功能完善强大的小说源码 - 四套模板
  19. Centos7下cobbler(补鞋匠)安装部署全过程
  20. 张飞的流水帐(无厘头式的搞笑)【

热门文章

  1. 让R与Python共舞
  2. 前端把cookie写在父域里_单点登录的三种实现方式
  3. DSP之时钟与定时器之一时钟发生器
  4. MarkDown(七)——LaTeX数学公式符号标记
  5. Ubuntu16.04安装Mono4.2.1 C#开发环境
  6. 【C++入门】C++多态
  7. MR Shuffle流程 入门
  8. python中根据字符串导入模块module
  9. Immutable 操作在 React 中的实践
  10. 在云栖小镇,新华三呈现物联网金秋硕果