在线客服
扫描二维码
下载博学谷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进阶学习总结Redis备份方式
对于Java进阶的学习者来说,Redis备份方式是需要弄清楚的重点之一。Redis备份方式即RDB和AOF两种。本文就围绕着RDB和AOF进行阐述,主要分成redis持久化的两种方式、数据恢复和RDB和AOF对比总结三大部分,感兴趣的同学就继续看下去吧!
7142
2019-08-16 18:09:10
Java方法语句集合零基础入门
Java开发中的方法学习,首先从方法概述开始,逐步深入学习方法的定义和调用、带参数方法的定义和调用、带返回值方法的定义和调用、方法注意事项、方法重载、方法的参数传递等的知识点。
6766
2019-12-04 10:56:34
Java开发游戏抽奖算法有哪些?
Java开发游戏抽奖算法有哪些?抽奖算法根据需求而定,游戏抽奖算法在指定奖品的集合中,每个奖品根据对对应概率进行抽取。Java开发游戏抽奖算法主要有随机数一一对应、离散法Alias算法等
8811
2020-02-19 16:26:26
JavaWeb开发XML学习笔记整理
JavaWeb开发能力是Java程序员的必备基础能力,因此掌握它十分重要。今天本文要和大家分享的是JavaWeb开发中有关XML学习笔记的整理。主要内容包括了XML的概念、XML的语法、约束和解析。感兴趣的朋友就一起来看看吧!
6094
2020-04-03 00:40:49
Vue入门案例详解
Vue作为Java开发者必须掌握的主流框架之一,以其轻巧、高性能等优势而备受青睐和追捧。本文将通过一个案例的详解,帮助大家顺利入门Vue,主要内容包括HTML模板、Vue渲染、双向绑定和事件处理。下面一起来学习吧~
5317
2020-04-28 18:12:02
