为什么要用版本控制
以前,我做开发的时候,每做完一个功能或者一个阶段,就会备份一次。当时间长了,就会变成这样:
浪费空间不说,当想要回到某个版本的时候,就得一个一个打开看看,特别费时费力。
所以我就到处找方法解决这个难题,皇天不负苦心人,终于还是被我找到了解决方法,那就是 版本控制。
什么是版本控制
你可以把一个版本控制系统(缩写 VCS)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。
版本控制有哪些类型
本地版本控制系统
这种是只在本地计算机上存储所有文件。
集中式版本控制系统
随着需求不断提高,本地版本控制系统的缺点越来越明显:无法多人开发。因为文件都存储在某一个人的计算机中,他人无法访问。
集中式版本控制系统应运而生。
当人们想编辑一个或多个文件时,只有最后一个文件被检索。这种设置不仅可以为需要这些文件的人提供文件访问权限,而且还可以提供他人的工作信息。
由于文件存储在一个单独的位置,每个人都需要共享这些文件,因此对文件所做的任何更改都会自动的与他人共享。
分布式版本控制系统
当然,集中式版本控制系统也有缺点:当服务器故障时,所有人都将无法工作。
现在面临着一个尴尬的局面:
- 使用集中式版本控制系统,将面临服务器故障的风险;
- 使用本地版本控制系统,将无法进行团队协作。
如果将两个系统合并在一起呢?分布式版本控制系统诞生了。
分布式版本控制系统具有本地版本控制系统的优点:
- 进行本地更改,不需要时时与服务器进行连接;
- 不依赖存储在服务器中的文件。
同时也有集中式版本控制系统的优点:
- 工作的可重用性;
- 可协同工作,不依赖于存储在单个机器上的历史。
分布式版本控制系统被设计成可用两种方式工作。它在本地存储每台机器上的文件和每个历史,并且在需要时将用户在本地所做的更改同步回服务器。这样便可以与他人共享这些更改以达到团队协作的目的。
如何选择版本控制系统
现在我们了解了版本控制系统有哪些类型,现在有很多版本控制系统,该如何选择呢?
Git 是一个相对比较新的软件,因此避免了许多其他版本控制系统的缺陷。
相较于其他版本控制系统,即使处理数百万个文件,使用 Git 执行的操作也只需几秒钟即可完成。其中的一个主要原因是 Git 处理文件的方式不同。
从概念上讲,大多数版本控制系统(CVS,Subversion等等)将数据视为一组文件,随着版本的增多而对其中的每一个进行更改。
相比之下,Git 则为文件快照,即整个文件的内容,而不是每个文件的版本之间的差异。每创建一个版本,都会创建一整个快照,但这并不会存储重复的文件:如果文件没有更改,则只保存文件的链接。这大大加快了 Git 处理的速度。
与其他版本控制系统相比,Git 尽可能的减少存储空间的浪费,同时又极大提高了处理的速度。