分布式版本控制VS集中式版本控制

2023-11-06

集中式版本控制

诸如CVS、SVN等,都有一个集中管理的服务器,保存所有的文件修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新。

 如上图所示,A、B、C为三位开发者,这是A将代码拉到本地进行开发,这个时候A开发完成后将代码提交到服务器这是就形成了一个历史版本。此时B再去拉取A提交的代码到本地去做下一个版本的开发,以此类推,集中式版本控制就是这样进行的。

这种做法带来了很多好处,每个人都能在一定程度上看到项目中其他人正在做些什么,管理员也可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

但是集中化版本控制的缺点是当中央服务器出现单点故障时,故障期间,谁都无法提交更新,也就无法协同工作。

分布式版本控制

最流行的分布式控制工具当属git,像git这种分布式版本控制工具,客户端提取的不是最新的版本的文件快照,而是把代码仓库完整的镜像下来(本地库),这样任意一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复,因为每个客户端每一次文件提取操作,实际上都是一次对整个仓库文件的备份。

分布式版本控制的出现解决了集中式版本控制系统的缺陷:

1、服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

2、每个客户端保存的也就是完整的项目(包含历史记录,更加安全)

如图,A、B、C三个客户端都会完整的保存整个项目的代码,对代码进行修改之后的版本记录会保存在本地,这个时候会有一个远程的代码库,假如A对代码进行了修改此时A把修改的代码推送到了远程库,这个时候B就先将远程库的代码拉取到本地之后再进行开发。这样的好处就在于所有的历史版本都会在本地进行记录,代码远程库(像github、gitee等)就算出现了故障也不会影响太大,因为版本控制是在本地进行的,只是暂时的不能将最新的代码提交到远程库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式版本控制VS集中式版本控制 的相关文章

  • vscode通过SSH连接gitlab的问题

    我在尝试通过 SSH 连接到 GitLab 远程存储库时遇到问题 这里是迄今为止完成的步骤 成功生成 SSH 密钥 管理人员将密钥添加到存储库中 因此当我访问 GitLab 网站时 我可以提交和发布分支 我无法从 VSCODE 发布分支并收
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生
  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 远程测试时如何搭建git开发环境

    这似乎是一个愚蠢的问题 但我觉得我对 GIT 相当了解 但我似乎无法按照我的意愿设置我的开发环境 我要么错过了一些非常简单的东西 要么我做错了 我在我的服务器上初始化了一个裸 git 存储库 将其克隆到我的本地计算机 提交我的文件并推送到原
  • git pull,忽略深度,如何不拉取整个历史记录?

    我们有一个巨大的多 GB git 存储库 主要是二进制对象 克隆需要几天时间 实际的主分支 没有历史记录 只有大约 20MB 所以我想 深度为 1 的 git 克隆就是解决办法 然而 现在我需要将某人的更新拉到主服务器 我们没有分支 当我拉
  • svn删除删除的文件

    我有一个 SVN 项目的工作副本 文件被应用程序从此工作副本中删除 当我使用 SVN 命令行提交工作副本时 我想从存储库中删除这些已删除的文件 如果我使用提交工作副本svn commit它不会从项目中删除文件 因为它们没有在本地删除svn
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • Git - 创建拉取请求而不分叉

    使用 git 已经有一段时间了 关于 git pull request 有很多教程和解释 其动机是什么等等 我遇到两种情况 1 分叉 git 仓库 我查看了一些公共 git 存储库并决定我想要做出贡献 所以我 通过以下方式创建重复的存储库F
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • 使用终端时 Git 推送在总计后卡住了?

    我尝试将一些文件推送到Github 总大小只有22 2M 我不知道为什么它在总行之后卡住了 我读过推送到 Github 时 Git 推送挂起 https stackoverflow com questions 16906161 git pu
  • 如何在不删除 Subversion 中文件的情况下将文件从版本控制中删除?

    我不小心用 add 命令向 SVN 添加了一个二进制文件 现在我想将其从版本控制中删除 但不删除该文件 我该怎么做呢 svn rm 保持本地
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • Git 提交失败:“请使用 -m 或 -F 选项提供消息。”

    当我键入 git commit 命令来提交文件时 我收到以下错误消息 Microsoft Visual Studio 微软 找不到命令 错误 核心编辑器 Microsoft Visual Studio 存在问题 请使用 m 或 F 选项提供

随机推荐

  • python学习笔记(二)

    字符串格式化方式 二 Python除了 占位符的方法外 还有另一种高效的格式化语法 具体例子如下 有种JS模板字符串的感觉 通过语法 f 内容 变量 的格式来快速格式化 f的含义是format格式化 ee my name 66kk 3 14
  • Spring框架自学之路——简易入门

    目录 目录 介绍 Spring中的IoC操作 IoC入门案例 Spring的bean管理 配置文件 Bean实例化的方式 Bean标签的常用属性 属性注入 使用有参构造函数注入属性 使用set方法注入属性 注入对象类型属性 p名称空间注入属
  • selenium爬取京东商品信息

    开始编写代码之前你应了解ajax 和python基础语法和库 知道异步加载 熟悉html js 本人ide用的是vscode 浏览器是chrome python3 7 主要用到了selenium自动化测试工具 一 先看效果 这里以 手机 为
  • C语言---数据结构实验---哈夫曼树及哈夫曼编码的算法实现---图的基本操作

    文章目录 写在前面 哈夫曼树及哈夫曼编码的算法实现 实验内容 代码实现 图的基本操作 实验内容 代码实现 写在前面 本篇实验代码非本人写 代码源自外部 经调试解决了部分warning和error后在本地vs上可以正常运行 如有运行失败可换至
  • addr2line objdump命令使用方法

    如果是 的 CMakeList txt 编译的时候需要加上一下选项 才可以生产 版本 可以使用addr2line 定位问题 catkin make DCMAKE BUILD TYPE debug DCATKIN WHITELIST PACK
  • STM32定时器-输入捕获

    定时器 输入捕获 输入捕获工作过程 一句话总结工作过程 通过检测TIMx CHx上的边沿信号 在边沿信号发生跳变 比如上升沿 下降沿 的时候 将当前定时器的值 TIMx CNT 存放到对应的捕获 比较寄存器 TIMxCCRx 里面 完成一次
  • 股票数据预处理

    数据导入 提示 注意是csv 还是xlsx文件 本文导入中证100指数 import pandas as pd data pd read excel data CSI100 xls dtype 股票代码 Stkcd str 注意设置代码格式
  • OSI和TCP/IP

    OSI和TCP IP是两种不同的计算机网络协议体系 OSI协议体系 即开放式系统互联通信参考模型 Open Systems Interconnection 是一种抽象的理论网络体系结构 由国际标准化组织 ISO 制定 这个体系结构包括七层
  • 使用msys2 mingw64编译gcc

    我们在msys2中使用pacman安装的GCC默认是不能显示中文帮助的 而Linux下是可以显示中文的 这是因为在编译msys2 Mingw在编译GCC时 是没有打开 enable nls开关的 为了让其可以显示中文 可以尝试自己编译GCC
  • 60-200-050-使用-命令-MySQL explain命令

    文章目录 1 explain使用方法 2 ID 3 select type 4 table 5 Type 5 0 null 5 1 system 5 2 const 5 3 eq ref 5 4 ref 5 5 range 5 6 inde
  • linux mysql cpu 查看工具_Linux常用系统分析工具-CPU

    TOP top命令可以实时动态地查看系统的整体运行情况 是一个综合了多方信息监测系统性能和运行信息的实用工具 TOP命令的可选参数和其对应的含义如下 c 显示完整的命令 d 屏幕刷新时间间隔 i 设置时间间隔 u 指定用户名 p 指定进程
  • LDA模型训练与得到文本主题、困惑度计算(含可运行案例)

    文章目录 模块一 训练LDA模型 模块二 困惑度计算 模块三 得到一段文本的主题 全部代码及案例 可直接运行 首先使用gensim库 pip install gensim 模块一 训练LDA模型 import gensim pip inst
  • 07-微信小程序-注册页面-模块化

    07 微信小程序 注册页面 文章目录 注册页面 使用 Page 构造器注册页面 参数Object 初始数据 案例代码 生命周期回调函数 组件事件处理函数 setData 案例代码 生命周期 模块化 注册页面 对于小程序中的每个页面 都需要在
  • [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形

    欢迎大家来到 Python从零到壹 在这里我将分享约200篇Python系列文章 带大家一起去学习和玩耍 看看Python这个有趣的世界 所有文章都将结合案例 代码和作者的经验讲解 真心想把自己近十年的编程经验分享给大家 希望对您有所帮助
  • HTML CSS 盒模型 +background 使用

    HTML 盒模型 box model 和background 部分内容来自菜鸟教程 所有HTML元素可以看作盒子 在CSS中 box model 这一术语是用来设计和布局时使用 CSS盒模型本质上是一个盒子 封装周围的HTML元素 它包括
  • 写一个函数,用户输入一个数判断是否是素数

    写一个函数 用户输入一个数判断是否是素数 function get num if num 1 num 0 return num 不是质数 for var i 2 i lt num i if num i 0 return num 不是质数 r
  • oracle生成标准uuid,Oracle 生成uuid方法

    近日 遇到朋友问及如何生成UUID 是 通用唯一识别码 Universally Unique Identifier 方法 其实数据中是支持的 Oracle中生成跨系统的唯一识别符UUID非常方便 比生成序列还简单 直接用sys guid 就
  • Stable Doodle:简单涂鸦一键变成艺术品

    摘要 Stable Doodle 是一款使用 AI 技术将简单涂鸦转化为艺术品的应用 它可以帮助用户快速 轻松地创作出精美的图画 本教程将介绍 Stable Doodle 的基本使用方法 正文 Stable Doodle 的使用非常简单 只
  • 2080ti,驱动安装,CUDA安装,CUDNN安装,CUDA10.1的不兼容问题

    发现问题 哎呦 我跑的是CPU 不是GPU 解决问题 Tensorflow目前不支持CUDA10 1 继续解决问题 哎呦 驱动被不小心删掉了 那就全部重新安装吧 最终解决好了 跑起来了 看似GPU 其实跑的是CPU 之前写了代码发现 能跑起
  • 分布式版本控制VS集中式版本控制

    集中式版本控制 诸如CVS SVN等 都有一个集中管理的服务器 保存所有的文件修订版本 而协同工作的人们都通过客户端连接到这台服务器 取出最新的文件或者提交更新 如上图所示 A B C为三位开发者 这是A将代码拉到本地进行开发 这个时候A开