版本控制
版本控制是维护工程蓝图的标准作法,能追踪工程蓝图从诞生到定案的过程。
版本控制也是一种软件工程技巧,借此能在软件开发的中,确保由不同人所编辑的同一代码文件都得到同步。
作用描述
最原始的版本控制系统是纯手工控制,修改文件或者保存文件副本,比如修改一个文件从version1到version2,如果只改动一次还好,我们知道修改了什么,但是当version2的文件修改为version3甚至version4的时候,我们想知道相对于上一个版本到底做了什么修改的话比较困难,回滚的时候也很容易出错。
而版本控制系统能记录所有文件的所有版本,可以有效的追踪文件的变化,同时很容易回滚到之前某个版本的状态。
无论是个人的文件或代码管理,还是企业中的团队协作开发,版本控制工具都是必不可少的利器。
作用总结
备份文件:在服务器中保存代码,方便随时恢复
记录历史:追溯任意代码文件的任意一行在什么时间被什么人修改过
回到过去:让版本库中的任意一个文件恢复到任意一个历史版本
多端共享:多个终端都可以共享同一份代码
团队协作:方便团队协作开发,尽可能减少冲突代码不一致情况
发展历程
版本控制软件
CVS
CVS(Concurrent Versions System)
版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。
CVS
用Copy-Modify-Merge
(拷贝、修改、合并)变化表支持对文件的同时访问和修改。
CVS
基于客户端/服务器的行为使其可容纳多个用户。
CVS
作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。
SVN
由于CVS
自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。
同样是开源而且免费的SVN
修正了CVS
的一-些稳定性问题,是目前用得最多的集中式版本库控制系统。
GIT
GIT(The stupid content tracker)
傻瓜内容跟踪器。Linus Torvalds
这样介绍。是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者机器上都是一个完整的数据库。
工具对比
集中式 vs 分布式
集中式
版本库是集中存放在中央服务器的,开发过程中,需要先从中央服务器取得最新的版本,修改代码后再将代码推送给中央服务器。
集中式特点在于必须有中央服务器,且使用过程中必须联网才能完成版本控制操作。一旦中央服务器挂掉或者数据丢失,则影响整个开发工作。
分布式
分布式版本控制抛开了中央服务器的概念,每台主机都是一个完整的版本库,使用过程可以不联网。
使用过程中多人协作可以通过相互推送自己修改的代码给对方,当然通常不会这么做,因为双方不一定在局域网内且未必能正常接收为了方便协作,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改。
主要区别
SVN
版本集中管理,所有的代码都在中央服务器上。
GIT
去中心化,每个服务器上都有一个完整的代码库。
网友评论