在线客服
扫描二维码
下载博学谷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等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份
这类系统指定和若干不同的远端代码仓库进行交互。在同一个项目中分别和不同工作小组的人相互协作。根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
一文解析六大设计模式及其应用场景
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案,是经过多年开发语言发展由众多的程序员积累总结出来的。掌握设计模式的应用,可以大大提高程序员的编程效率。本文将和大家分享我们常见的六种设计模式以及其应用场景。
9234
2019-08-08 14:08:39
Redis哨兵模式免费教程
哨兵(Sentinel)主要是为了解决在主从复制架构中从Redis宕机和主Redis宕机的情况。Redis-Sentinel是用于管理Redis集群:监控(Monitoring、提醒(Notification)、自动故障迁移(Automatic failover)。
5216
2019-12-04 11:26:30
Java开发工程师面试准备攻略
本文主要和大家分享一下,Java开发工程师面试要做哪些准备。一般来讲,Java岗位的面试准备主要集中在两方面。一方面是面试前的简历制作,另一方面是多做Java开发相关的面试题。前者是为了获得更多的面试机会,后者是为了在面试中通过面试官的考核,从众多求职者中脱颖而出。那么,我们就来详细看看下面这份Java开发工程师面试准备攻略吧!
5615
2020-01-10 15:38:13
Apollo分布式部署学什么?掌握到什么程度?
Apollo分布式部署学习,程序员需要掌握配置中心的核心概念及使用场景,熟悉主流配置中心,掌握Apollo的工作原理、安装方法、项目管理、配置管理、集群管理、配置发布、生产环境的部署、灰度发布等核心知识点
4263
2020-02-20 15:54:59
学习Java技术开发被劝退的原因有哪些?
学习Java技术开发被劝退的原因有哪些?有不少人学习Java时会崩溃,如Java糟糕的入门体验、核心标准库不够用、最啰嗦的语言Java、复杂的 "企业级"产品、库作者处理的问题越来越复杂、太多的抽象性、非本地的FP支持等等原因。
3586
2022-04-12 11:36:12