更新时间:2022-09-29 10:47:27 来源:极悦 浏览970次
什么是“版本控制”,你为什么要在意?版本控制是一个系统,它记录一段时间内对一个文件或一组文件的更改,以便您以后可以调用特定的版本。对于本书中的示例,您将使用软件源代码作为受版本控制的文件,但实际上您可以对计算机上几乎任何类型的文件执行此操作。
如果你是一个图形或网页设计师,想要保留图像或版面的每个版本(这是你最想做的),那么使用版本控制系统(VCS)是非常明智的。它允许您将选定的文件恢复到以前的状态,将整个项目恢复到以前状态,比较一段时间内的更改,查看谁上次修改了可能导致问题的内容,谁引入了问题以及何时引入了问题,等等。使用VCS通常还意味着,如果您把事情搞砸或丢失文件,您可以轻松恢复。此外,您只需很少的开销就可以获得所有这些。
许多人选择的版本控制方法是将文件复制到另一个目录(如果聪明的话,可能是一个带有时间戳的目录)。这种方法非常常见,因为它非常简单,但也极易出错。很容易忘记您所在的目录,并意外写入错误的文件或复制您无意中复制的文件。
为了解决这个问题,程序员很久以前就开发了本地VCS,它有一个简单的数据库,可以控制对文件的所有更改。
最流行的VCS工具之一是一个名为RCS的系统,它至今仍在许多计算机上分发。RCS通过在磁盘上保留特殊格式的补丁集(即文件之间的差异)来工作;然后,它可以通过添加所有补丁,在任何时间点重新创建任何文件的外观。
人们遇到的下一个主要问题是,他们需要与其他系统上的开发人员协作。为了解决这个问题,开发了集中式版本控制系统(CVCS)。这些系统(如CVS、Subversion和Perforce)有一个包含所有版本化文件的服务器,以及多个从该中心签出文件的客户端。多年来,这一直是版本控制的标准。
这种设置有很多优点,尤其是与本地VCS相比。例如,每个人都在一定程度上知道项目中其他人在做什么。管理员可以细粒度地控制谁可以做什么,管理CVCS比处理每个客户端上的本地数据库要容易得多。
然而,这种设置也有一些严重的缺点。最明显的是集中式服务器所代表的单点故障。如果该服务器宕机一个小时,那么在这一小时内,没有人能够进行协作,也没有人能够保存对他们正在处理的任何内容的版本更改。如果中央数据库所在的硬盘损坏,并且没有保存适当的备份,那么您将完全失去一切 — 项目的整个历史,除了人们在本地机器上碰巧看到的任何单个快照。本地VCS也面临同样的问题 — 只要你在一个地方拥有整个项目的历史,你就有失去一切的风险。
这是分布式版本控制系统(DVCS)介入的地方。在DVCS(如Git、Mercurial、Bazaar或Darcs)中,客户机不只是查看文件的最新快照;相反,它们完全反映了存储库,包括其完整历史。因此,如果任何服务器死亡,并且这些系统通过该服务器进行协作,则可以将任何客户端存储库复制回服务器以进行恢复。每个克隆实际上都是所有数据的完整备份。
此外,这些系统中的许多都能很好地处理多个远程存储库,因此您可以在同一项目中以不同的方式同时与不同的人员组协作。这允许您设置集中式系统中不可能的几种工作流,例如层次模型。如果大家想了解更多相关知识,可以关注一下本站的Git教程,里面的课程内容由浅到深,很适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习