从今天开始。我们了解的分布式版本控制系统Git相关内容。了解Git之前,我们的第一个版本控制系统,使宏观的描述。

什么是版本号控制

版本号控制是指通过对文件内容的变化进行记录,并为每次的变化进行编号,以便将来查阅文件的修订情况。有了版本号控制之后,就能够比較文件变化的细节,以便将某个文件回溯到之前某个时间点的状态。从而解决因为文件变化过程中出现的怪异问题。

        版本号控制到眼下为止的相关产品有非常多,大致能够分为三类。各自是本地版本号控制系统、集中式版本号控制系统和分布式版本号控制系统。

本地版本号控制系统

本地版本号控制系统出现之前。很多人为了保存不同版本号的文件,一般是通过改名病加入时间戳的方式来差别不同的版本号文件。这样的方式很easy,同一时候这样的方式也很easy造成文件混乱。所以很早就有人开发了很多种本地版本号控制系统,其原理也很easy,即使用一个简单的数据库记录文件的每次变更。其原理示意图例如以下所看到的:

集中式版本号控制系统

相对与本地版本号控制系统。集中式版本号控制系统攻克了本地版本号控制系统仅在单个的操作系统之上执行的缺陷,实现了在不同的操作系统之上执行,这就给开发人员之间进行团队合作提供了条件。集中式版本号控制系统的原理很与本地版本号控制系统的原理类似,所不同的是集中式版本号管理系统有一个单一的集中管理的server。该server能够保存全部的文件改动版本号信息,參与团队开发的client连接这台server之后,就能够提交更新和去除最新的文件。

其原理示意图例如以下所看到的:

分布式版本号控制系统

虽然集中式版本号控制系统已经可以满足大部分的需求,但由于集中式版本号控制系统本身就存在单点故障问题,即假设中央server宕机或发生问题。那么各个client将无法正常工作。分布式版本号控制系统的工作原理在于client并不仅仅提取各个client上的最新版本号的文件。而是把中央server上的代码仓库完整地镜像下来。

这样。其中央server发生问题之后,就行利用不论什么一个client的本地仓库进行中央仓库的恢复。由于每一次的提取操作,就是对中央server仓库的完整备份。其原理示意图例如以下所看到的:

三种类型的版本号控制系统介绍就到这里,这里重点了解三者之间故障及解决方案的联系和发展的过程。接下来,我们将继续讲解Git其他。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Git现实(一个)版本控制概述的更多相关文章

  1. 实战:使用SVN+apache搭建一个版本控制服务器

    今天讲的内容: 实战:使用SVN+apache搭建一个版本控制服务器 每天: 10:00 晚上:21:00 服务端:xuegod63.cn   IP:192.168.10.63 服务概述: SVN(s ...

  2. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  3. Git 实习一个月恍然大悟合集

    从开始实习到现在大概有一个月了,这个月时间接触了很多新东西,其中就包括了git版本控制.分支管理等等.我在这段时间里,深深地感受到了git对公司项目代码管理和控制.团队合作带来的益处和其重要性.其实在 ...

  4. git引入_版本控制介绍

    八个字形容git技术: 公司必备,一定要会 一.git概念: git是一个免费的,开源的分布式版本控制系统,可以快速高效的处理从小型到大型的项目 二.什么是版本控制: 版本控制是一种一个记录一个或若个 ...

  5. git查看一个文件的历史记录

    git log --all -- '*'FILENAME'*' 支持模糊查询 主要用于查找历史上被删除的文件 可以做成git的一个快捷命令 find = "!f(){ git log --a ...

  6. 【Git】Git初始化一个仓库

    文章目录 初始化仓库 检查当前文件状态 跟踪新文件 提交更新 跳过使用暂存区域 移除文件 添加远程仓库 推送到远程仓库 简单记录-慕课网 从0开始 独立完成企业级Java电商网站开发 Git初始化一个 ...

  7. Git: 搭建一个本地私人仓库

    Git: 搭建一个本地私人仓库 寝室放个电脑.实验室也有个电脑 为进行数据同步,充分利用实验室的服务器搭建了个本地私人仓库 1. 安装流程 当然首先保证服务器上与PC机上都已经安装了可用的Git 在P ...

  8. 【Git版本控制】Git初始化一个仓库

    git init //初始化一个本地库 git add -A//将所有的文件添加到暂存区 git commit -m “首次提交” //将暂存区的文件提交到版本库 git remote add ori ...

  9. 使用百度网盘+Git,把版本控制托管到云端

    之前公司的一个项目使用SVN来做的版本控制,服务器设在我这台电脑上.然后是出于某些原因,我的电脑IP变了多次,每变一次就要重新绑定静态ip,甚是烦人.同时SVN这种集中式的版本控制服务在我关闭了我的电 ...

随机推荐

  1. uva11922(强行用rope替代spaly)

    spaly没学过,用rope水过, rope是extension库中的东西,codeblocks编译器支持, 需要包含 #include <ext/rope>using namespace ...

  2. Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发

    原文 Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发 前言 在前一篇教学中, 我们学会如何使用Visual Studio 搭配Xcode 进行iOS基本控 ...

  3. [WPF]DataGrid C#添加右键弹出选择菜单

    private void dataGrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { ContextMenu cont ...

  4. hdu2457 Trie图+dp

    hdu2457 给定n个模式串, 和一个文本串 问如果修改最少的字符串使得文本串不包含模式串, 输出最少的次数,如果不能修改成功,则输出-1 dp[i][j] 表示长度为i的字符串, 到达状态j(Tr ...

  5. WCF异常传播

    传送至客户端的异常肯定是CommunitionException类型,包括一般的通信过程中出错而引发的CommunicationException类型,System.IdentityModel.Sel ...

  6. IOS加强知识(1)理解力Objective-C

    一直想写一般Objective-C帖子,总是没时间.所以,我希望有一个巨大的知识更小.温馨提示小的变化.写一点点,每天.东西把他们的学习分享,好了废话不多. 1.一门动态的语言OC Object-C( ...

  7. Node.js : 我只需要一个店小二

    刚刚开始接触Node.js时, google了很多文章,但发现大部分都是泛泛的介绍安装,配置,以及介绍几个小例子 有一种雾里观花的感觉,所以非常困惑,不知道Node.js到底解决了什么问题,它的优势到 ...

  8. 004串重量 (keep it up)

    设计算法并写出代码移除字符串中反复的字符,不能使用额外的缓存空间. 注意: 能够使用额外的一个或两个变量,但不同意额外再开一个数组拷贝. 简单题直接上代码: #include <stdio.h& ...

  9. Windows Phone 8 - Runtime Location API - 2

    原文:Windows Phone 8 - Runtime Location API - 2 在<Windows Phone 8 - Runtime Location API - 1>介绍基 ...

  10. Quartz2D裁剪圆形头像

    // 0. 载入原有图片 UIImage *image = [UIImage imageNamed:icon]; // 1.创建图片上下文 CGFloat margin = border; CGSiz ...