Git 版本控制系统
版本控制系统是一种跟踪文件或一组文件随时间变化的软件,以便您可以以后回忆特定版本。它还允许您与其他程序员一起工作。
版本控制系统是一组软件工具,帮助团队管理源代码的变化。它使用一种特殊类型的数据库来跟踪代码的每一次修改。
开发人员可以使用旧版本将代码与较旧的版本进行比较以修复错误。
版本控制系统的好处
版本控制系统在软件开发中非常有帮助和益处;不使用版本控制开发软件是不安全的。它为不确定性提供了备份。版本控制系统为开发人员提供了快速的接口。它还允许软件团队根据团队规模包括更多开发人员来保持效率和敏捷性。
使用版本控制系统的一些关键好处如下。
- 文件的完整变更历史
- 同时工作
- 分支和合并
- 可追溯性
版本控制系统的类型
- 本地化版本控制系统
- 集中式版本控制系统
- 分布式版本控制系统
本地化版本控制系统
本地化版本控制方法是一种常见的方法,因为它简单易行。但是这种方法会导致出错的可能性更高。在这种方法中,你可能忘记你在哪个目录下,并且不小心写入错误的文件或复制你不想要的文件。
为了解决这个问题,程序员开发了具有简单数据库的本地VCS。这些数据库保存了所有文件的变更记录。本地版本控制系统会保存文件的本地副本。
本地VCS的主要缺点是它有单一故障点。
集中式版本控制系统
开发人员需要与其他系统上的开发人员进行协作。本地化版本控制系统在这种情况下失败了。为了解决这个问题,开发了集中式版本控制系统。
这些系统有一个包含有版本文件的单一服务器,以及一些从一个中央位置检出文件的客户端。
集中式版本控制系统有许多好处,特别是相对于本地VCS来说。
- 系统上的每个人都能了解项目中其他人正在做的工作。
- 管理员对其他开发人员有控制权。
- 处理集中式版本控制系统要比处理分布式版本控制系统容易。
- 本地版本控制系统配备了一个存储和管理文件不同版本的服务器软件组件。
它也和本地版本控制系统一样存在单点故障的缺点。
分布式版本控制系统
集中式版本控制系统使用一个中央服务器来存储所有的数据库和团队协作。但由于存在单点故障,即中央服务器的故障,开发人员不喜欢它。接下来,分布式版本控制系统被开发出来。
在分布式版本控制系统(如Git,Mercurial,Bazaar或Darcs)中,用户有一个本地仓库的副本。因此,客户端不仅可以检出文件的最新快照,还可以完全镜像整个仓库。本地仓库包含主仓库中的所有文件和元数据。
分布式版本控制系统(DVCS)允许自动管理分支和合并。它加快了大多数操作的速度,除了推送和拉取。DVCS增强了脱机工作的能力,并且不依赖于单一位置进行备份。如果任何服务器停止工作且其他系统通过它进行合作,则该服务器可以恢复任何客户端仓库。每个检出都是所有数据的完整备份。
这些系统不一定依赖于一个中央服务器来存储项目文件的所有版本。
集中式版本控制系统与分布式版本控制系统的区别
集中式版本控制系统是使用 客户端/服务器 架构的系统。在集中式版本控制系统中,一个或多个客户机直接连接到中央服务器。相反,分布式版本控制系统是使用 点对点 架构的系统。
使用这两种版本控制系统有许多优缺点。让我们来看一下集中式和分布式版本控制系统之间的一些重要区别。
集中式版本控制系统 | 分布式版本控制系统 |
---|---|
在CVCS中,代码仓库位于一个地方,并向多个客户端提供信息。 | 在DVCS中,每个用户都有一个本地副本代替服务器端的中央代码仓库。 |
它基于客户端-服务器的方法。 | 它基于客户端-服务器的方法。 |
它是基于中央代码仓库的最直接的系统。 | 它灵活,并且根据每个人都有自己的代码仓库的概念而出现。 |
在CVCS中,服务器向全球所有客户端提供最新的代码。 | 在DVCS中,每个用户可以检出代码的快照,并且完全镜像中央代码仓库。 |
CVCS易于管理,并且通过其服务器从一个地方对用户和访问进行额外的控制。 | 与CVCS相比,DVCS更快,因为您不必为每个命令与中央服务器交互。 |
CVCS的流行工具有 SVN (Subversion)和 CVS 。 | DVCS的流行工具有 Git 和 Mercurial 。 |
对于初学者来说,CVCS易于理解。 | 对于初学者来说,DVCS有一些复杂的过程。 |
如果服务器失败,则无法从另一个系统访问数据。 | 如果任何服务器失败,并且其他系统通过它进行合作,该服务器可以恢复任何客户端代码仓库。 |