在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
分布式版本控制Git工作原理是什么?适合分布式开发,强调个体;公共服务器压力和数据量不会太大;速度快灵活;任意两个开发者之间可以很容易的解决冲突;离线工作。 但学习周期相对而言比较长;不符合常规思维;代码保密性差,开发者把整个库克隆下来可以完全公开所有代码和版本信息。

Git是什么?GIT分布式版本控制系统,Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。Git被LinusTorvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖网络和中心服务器。
Git出现减轻开发者和开源项目对于管理分支代码的压力,由于对分支的良好控制,更鼓励开发者对项目做出贡献。许多开源项目包括Linuxkernel,Samba,X.orgServer,RubyonRails,都已经过渡到使用Git作为版本控制工具。在任何地点提交自己的代码和查看代码版本;可以开诸多个分支来实践自己的想法,而合并这些分支的开销可以忽略不计。接下来了解下什么是版本控制?
一、本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单。不过坏处也不少:有时候会混淆所在的工作目录,如果弄错文件丢了数据就没法撤销恢复。为了解决这个问题开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异
其中最流行是rcs,许多计算机系统上有应用。在流行的MacOSX系统上安装了开发者工具包后可以使用rcs命令。工作原理基本上就是保存并管理文件补丁。文件补丁是一种特定格式的文本文件,记录着对应文件修订前后的内容变化。根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。
二、集中化的版本控制系统
如何让在不同系统上的开发者协同工作?于是,集中化的版本控制系统CVCS应运而生。这类系统,诸如CVS,Subversion以及Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,成为版本控制系统的标准做法。
集中化的版本控制系统许多优势,相较于老式的本地VCS来说。每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个CVCS要远比在各个客户端上维护本地数据库来得轻松容易。
缺点是中央服务器的单点故障。如果宕机一小时,谁都无法提交更新,也就无法协同工作。要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就还是会有丢失数据的风险。最坏的情况是彻底丢失整个项目的所有历史更改记录,而被客户端提取出来的某些快照数据除外,但这样的话依然是个问题,你不能保证所有的数据都已经有人事先完整提取出来过。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
三、分布式版本控制系统:
分布式版本控制系统DVCS。在这类系统中像Git,Mercurial,Bazaar以及Darcs等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份
这类系统指定和若干不同的远端代码仓库进行交互。在同一个项目中分别和不同工作小组的人相互协作。根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java入门比较好的书是哪本?Java入门教材推荐
Java入门最好的书是哪本?对于刚刚入门Java的初学者而言,第一本Java入门教材必须要通俗易懂,最好能把理论知识和实战练习结合起来,而满足上述条件的书籍非《Java基础入门》莫属。《Java基础入门》是由传智播客高教产品研发部,为零基础初学者专门编著的Java学习教材。下面我们来看看这本书的详细内容吧!
7880
2019-12-05 13:09:05
Java程序员Dubbo面试题整理附答案
Dubbo作为国内最主流和常见的分布式服务框架,是Java程序员必须要熟练掌握的框架。虽然Consul正在崛起,但Dubbo又开始重新更新,因此目前市场上仍有不少公司使用Dubbo。在Java岗位的面试中,Dubbo更是会被经常问到的技术难点,因此无论你在哪家公司面试,都必须熟悉Dubbo的相关知识点。本文为大家整理了一些Java程序员常见的Dubbo面试题,并附上了参考答案,一起来做做吧!
6990
2020-04-15 17:19:27
Java学习需要什么软件?Java开发工具介绍
Java学习需要什么软件?学习过程中会用到很多Java软件,比如:Eclipse、IDEA、Git、FindBugs、Jcreator等。初学者最好将Java入门基础知识贯穿在一个实例中,逐步深入,可以帮助你快速进入Java编程的世界。
6676
2020-07-14 16:12:03
微服务和分布式的区别什么?有什么特点?
微服务设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也可以是同一个服务器。分布式属于微服务,将模块拆分成一个独立的服务单元通过接口来实现数据的交互。分布式和微服的架构很相似,只是部署的方式不一样而已。
6098
2021-03-10 11:10:50
关于Java,你想知道的一切,这里说透了
这里是回车课堂--Java通识课三,在一和二咱们聊了【编程思维】,毕业后【我的职业选择-Java】,希望能够给处在“慌”金时代的你一丝启发。聊过之后如果你也有意从事 Java 编程事业的话,可能就会比较关心实际的问题了。
6072
2021-08-12 18:13:02
