版本控制(Revision control)是一种在开发的过程当中用于管理咱们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复之前的版本的软件工程技术。安全
简单的说就是用于管理多人协同开发项目的技术服务器
没有进行版本控制或者版本控制自己缺少正确的流程管理,在软件开发过程当中将会引入不少问题,如软件代码的一致性、软件内容的冗余、软件过程的事务性、软件开发过程当中的并发性、软件源代码的安全性、以及软件的整合等问题。网络
主流的版本控制器有以下这些:并发
版本控制产品很是多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、 Monotone、Bazaar、Mercurial、SourceGear Vault),如今影响力最大且使用最普遍的是Git与SVN分布式
1. 本地版本控制工具
记录文件每次的更新,能够对每一个版本作一个快照,或是记录补丁文件,适合我的用,如RCS版本控制
2. 集中版本控制blog
全部的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传本身的修改事务
全部的版本数据都存在服务器上,用户的本地只有本身之前所同步的版本,若是不连网的话,用户就看不到历史版本,也没法切换版本验证问题,或在不一样分支工做。并且,全部数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失全部的数据,固然能够按期备份。表明产品: SVN、CVS、VSS开发
3. 分布式版本控制
全部版本信息仓库所有同步到本地的每一个用户,这样就能够在本地查看全部版本历史,能够离线在本地提交,只须要在联网时push到相应的服务器或其余用户那里。因为每一个用户那里保存的都是全部的版本数据,只要有一个用户的设备没有问题就能够恢复全部的数据,但这增长了本地存储空间的占用。
不会由于服务器损坏或者网络问题,形成不能工做的状况!
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工做的时候,用的都是本身的电脑,因此搜寻要从中央服务器获得最新的版本,而后工做,完成工做后,须要把本身作完的工做推送到中央服务器。集中式版本控制系统是必须联网才能工做的,对网络带宽要求比较高。
Git是分布式版本控制系统,没有中央服务器,每一个人的电脑就是一个完整的版本库,工做的时候不须要联网,由于版本都是在本身电脑上。协同的方法是这样的:好比说本身在电脑上改了文件A,其余人也在电脑上改了文件A,这时。二者之间只需把各自的修改推送给对方,就能够互相看到对方的修改了。
Git是目前世界上最早进的分布式版本控制系统。