Git——版本控制概论(一)

随着信息技术的发展,软件开发已不是小手工做坊,软件的规模和复杂度已经再也不适合一我的单打独斗的开发了,安全

团队协做变得至关重要,若是没有VCS版本控制系统Version Control System),团队开发就会变得乱七八糟。服务器

 

1.版本控制概论网络

版本控制是记录咱们对文件、目录或工程等修改的历史,方便查看更改历史,备份以便恢复之前的版本,多人协做。分布式

 

最先的版本控制是纯手工的版本控制:修改文件,保存文件副本。spa

因为许多时候偷懒省事,保存副本文件名比较随意,时间一长就不知道哪一个是哪一个了。设计

 

因为手工管理比较麻烦且混乱,后来就出现了本地版本控制,记录文件每次的更新,能够对每一个版本作一个快照,或是记录补丁文件。3d

 

可是本地版本控制系统偏向于我的使用,或者多个使用的人必须使用相同的设备,若是须要多人协做那就很差办了。版本控制

因而乎,集中版本控制(Centralized Version Control Systems,简称CVCS)应运而生。blog

在CVCS中,全部版本数据都保存在服务器上,一块儿工做的人从服务器上同步更新或上传本身的修改。开发

可是,全部版本数据都保存在服务器上,用户要获取最新版本就须要从中心服务器上下载,若是网络的带宽高还好,不然会很是麻烦。

同时查看历史版本也必须联网,若是不联网就看不到历史版本,没法切换版本验证问题,或不能在不一样分支工做。

并且,全部数据都保存在一台服务器上,数据面临丢失的风险。

 

针对CVSC的以上缺点,就出现了分布式的版本控制(Distributed Verson Control System,简称DVCS),经常使用的有Git、Mercurial等。

DVCS不是复制指定版本的快照,而是把全部的版本信息仓库所有同步到本地,这样就能够在本地查看全部的历史版本,

能够离线在本地提交,只须要在联网时推送到相应的服务器或其它用户那里。

因为每一个用户那里保存的都是全部的版本数据,因此只要一个用户的设备没有问题就能够恢复全部数据。

固然,这增长了本地存储空间的占用。

 

2.集中式VS分布式

因为在实际生产中基本上都是使用集中式或分布式的版本控制,因此下面会分析一下各自的优缺点。

(1)集中式版本控制系统

集中式的版本控制系统的版本库是集中存放在中央服务器,而干活的时候,用的都是本身的电脑,

因此先要从中央服务器取得最新的版本,而后开始干活,干完活后,再把本身的或推送个中央服务器。

中央服务器就比如一个图书馆,你要改一本书,必须先从图书馆借出来,而后回到家中改,改完以后再放回图书馆。

集中式版本控制最大的毛病就是必须联网才能工做,没有网你什么都作不了,并且受制于带宽。

 

(2)分布式版本控制

与集中式版本控制相比,分布式版本控制没有“中央服务器”,每一个成员的电脑都是一个完整的版本库,

这样你工做的时候就不须要联网,由于版本库就在你本身的电脑上。那么多人是如何协做的了?

若是你修改了一个文件A,你的同时也修改了一个文件A,那么你俩之间就能够相互推送,而后决定最终的版本。

还集中式版本系统相比,分布式版本系统的安全性要高的多,由于每一个人都有一个完整的库,因此某我的的电脑出了问题不打紧,

只要从别人那里复制一份就好了,而集中式的版本控制系统要是“中央服务器”出了问题,那就完全玩完。

在实际使用分布式版本控制系统的时候,大部分时候对于两我的来讲可能不在一个局域网以内,

这样两台电脑就不能直接访问,或者说双方并非同时在线,以及其余种种缘由,所以在分布式系统中须要有一台服务器充当“中央服务器”,

可是只是方便不一样库之间的版本推送,没有它也能工做。

固然,咱们接下来要详细介绍的Git并非说只有没必要联网这么简单。

CVS做为最先的开源并且免费的集中式版本控制系统,直到如今依然还有很多人在使用。

因为CVS自身设计的问题,会形成提交文件不完整,版本库莫名其妙损坏的状况。

一样是开源并且免费的SVN修正了CVS的一些稳定性问题,是目前使用最多的集中式版本控制系统。

Git是一种很是流行的分布式版本控制系统,也能够叫作源代码管理系统,相对于SVN来讲就是分布式。

SVN须要一个中心服务器保存源代码,全部的开发者都是用客户端进而这个服务器交互。

GIt的强大之处并不是在于分布式,而是其对源代码存储的机制(使用快照),

因为这样的机制的存在,你能够大量频繁的使用分支来工做,经过分支来隔离功能开发的过程。

相关文章
相关标签/搜索