在线客服
扫描二维码
下载博学谷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开发Overload 和 Override 的区别是什么?
Java开发Overload 和 Override 的区别是什么?Overloaded 的方法是否可以改变返回值的类型?Overload 是重载的意思,Override 是覆盖的意思,也就是重写。重载 Overload 表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
9035
2019-05-24 15:22:03
Java垃圾回收器相关问题解答
相信很许多人在学习Java的时候,都没有搞清楚过Java垃圾回收器。因此本文主要讲述了Java垃圾回收器的定义、性能评估工具、回收算法等等内容,为大家全面解答垃圾回收器的相关问题。
5158
2019-08-20 15:55:44
Java课程设计参考文献推荐名单
实践出真知,对于广大Java学习者来说,Java课程设计可以充分锻炼到大家对理论知识的运用,并且发现自身学习上的不足再加以努力。为了解决大家在Java课程设计时遇到的问题,小编特地整理了参考文献的推荐名单,上面有100多篇文献及其相关信息,希望对大家有用。
11445
2019-08-29 11:00:25
Java程序员Dubbo面试题整理附答案
Dubbo作为国内最主流和常见的分布式服务框架,是Java程序员必须要熟练掌握的框架。虽然Consul正在崛起,但Dubbo又开始重新更新,因此目前市场上仍有不少公司使用Dubbo。在Java岗位的面试中,Dubbo更是会被经常问到的技术难点,因此无论你在哪家公司面试,都必须熟悉Dubbo的相关知识点。本文为大家整理了一些Java程序员常见的Dubbo面试题,并附上了参考答案,一起来做做吧!
5445
2020-04-15 17:19:27
MySQL数据库的基本使用之排序查询语法
MySQL数据库的基本使用之排序查询语法,为了方便查看数据可以对数据进行排序。学习排序我们需要掌握升序查询和降序查询的关键字。
3571
2022-01-13 15:42:13