在线客服
扫描二维码
下载博学谷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基础 "=="和 equals 方法究竟有什么区别?
Java基础 "=="和 equals 方法究竟有什么区别?==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
8208
2019-05-23 11:31:26
MySQL数据库性能优化是什么?
MySQL数据库目前已被Oracle收购,并发展处多个版本。MySQL是一种开放源代码的关系型数据库管理系统RDBMS,使用最常用的数据库管理语言--结构化查询语言SQL进行数据库管理。
4816
2019-11-22 15:44:54
零基础学Java免费视频课程分享
如今,想要转行学Java的零基础者是越来越多了。相信大多数的初学者在刚刚入门Java的时候,难免都会感到十分迷茫无从下手。要知道,Java作为一个经久不衰的编程语言,在备受程序员喜爱的同时,其学习难度和知识范围也不小。为了帮助大家可以更好更快的入门Java,博学谷特意推出了学Java的免费视频课程,希望可以帮助零基础的编程小白,少走一些弯路,快速入门Java的同时,也能找到自己的学习的大方向。
5184
2020-01-17 12:04:21
学习Java需要什么基础?零基础能否学会?
如果对学习Java感兴趣,零基础也可以学会,对于相应基础的要求并不高。相对而言有基础学习java更有优势,目前很多人是零转行或有一定基础进一步提升,有基础比较关心的现有的资源对想学java是否有利,或想学习java都要关注哪些知识点。
4814
2020-02-12 15:48:25
Apollo分布式部署学什么?掌握到什么程度?
Apollo分布式部署学习,程序员需要掌握配置中心的核心概念及使用场景,熟悉主流配置中心,掌握Apollo的工作原理、安装方法、项目管理、配置管理、集群管理、配置发布、生产环境的部署、灰度发布等核心知识点
3666
2020-02-20 15:54:59