版本控制

版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份。

它的作用如下:

  • 实现跨区域多人协同开发。
  • 追踪和记载一个或者多个文件的历史记录。
  • 组织和保护你的源代码和文档。
  • 统计工作量。
  • 并行开发、提高开发效率。
  • 跟踪记录整个软件的开发过程。
  • 减轻开发人员的负担,节省时间,同时降低人为错误。

简而言之就是用于管理多人协同开发的技术。

产品

主流的版本控制器如下:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • RCS(GNU Revision Control System)

除了这些主流的产品,还有一些其他的产品:

  • Visual Studio Online
  • Perforce
  • Rational ClearCase
  • Serena Dimention
  • SVK
  • BitKeeper
  • Monotone
  • Bazaar
  • Mercurial
  • SourceGear Vault

现在影响力最大且使用最广泛的是 Git 与 SVN。

SVN 由于其局限性,近年来的地位已经慢慢被 Git 所取代,现在 Git 是世界上最先进的分布式版本控制系统。

分类

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用。

代表产品:RCS。

集中版本控制

所有的版本数据都保存在服务器上,用户本地只有自己以前所同步的版本,协同开发者从服务器上同步更新或上传自己的修改。在没有网络的情况下,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。

所有数据都保存在单一的服务器上,如果这个服务器损坏,就会丢失所有的数据,需要定期备份。

代表产品:SVN。

分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史。在没有网络的情况下,可以离线在本地提交,只需在连网时推送到相应的服务器或其他用户那里。

由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据。不会因为服务器损坏或者网络问题,造成不能工作的情况,极大的降低了风险。

代表产品:Git。

Git 与 SVN 区别

SVN 是集中式版本控制系统,版本库是放在中央服务器的。

工作的时候,首先要从中央服务器得到最新的版本,完成工作后,需要把自己的代码推送到中央服务器。集中式版本控制系统是必须联网才能工作,且对网络带宽要求较高。

Git 是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库。

工作的时候不需要联网,因为版本都在自己电脑上。待有网络后,把本地的版本推送到远程即可。

历史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。一切始于 Linux 的维护,众所周知,Linux 是开源的,其内核开源项目有着大量的参与者。

1991-2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。由于提交的内容繁多,这些工作是非常痛苦的。

到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。在这期间,Linux 社区中很多的大佬破解研究 BitKeeper。

到 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用的权力。这就迫使 Linux 开源社区开发出自己的版本系统。Linux 的缔造者 Linus Torvalds 花了两周左右的时间,开发出了 Git。


参考

https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0

版本

2.35.1.2

Git 01 概述的更多相关文章

  1. kafka详解(01) - 概述

    kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...

  2. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  3. Git - 01. git config

    1. 概述 管理 git 配置文件命令 配置算是 git 的 meta 大概了解下就行 写这个的原因, 是因为 安装 的时候需要配置 用户名 和 密码 这个操作本质上, 是对属性的配置 先简单知道下操 ...

  4. 01 - 概述 VTK 6.0 迁移

    摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...

  5. [Git]01 如何安装和配置

     简单地说,Git 究竟是怎样的一个系统呢? 请注意,接下来的内容非常重要,若是理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余.在开始学习 Git 的时候,请不要尝试把各种概 ...

  6. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  7. git版本管理工具-git的概述

    什么是git Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目的一种工具 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不 ...

  8. Hive 01 概述、安装配置

    概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...

  9. GIT → 01:学习版本控制的原因

    1.1 没有版本控制出现的问题 备份多个版本,浪费存储空间,花费时间长. 难以恢复至以前的历史版本,容易引发BUG,解决代码冲突困难. 难于追溯问题代码的修改人和修改时间.修改内容.日志信息. 项目升 ...

  10. 【OracleDB】 01 概述和基本操作

    实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...

随机推荐

  1. 【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧

    两数之和 力扣题目链接(opens new window) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...

  2. 解析Spring中的循环依赖问题:再探三级缓存(AOP)

    前言 在之前的内容中,我们简要探讨了循环依赖,并指出仅通过引入二级缓存即可解决此问题.然而,你可能会好奇为何在Spring框架中还需要引入三级缓存singletonFactories.在前述总结中,我 ...

  3. JAVA 考试管理系统 大作业(一):需求分析

    好家伙,有需要的拿去借鉴吧(虽然我也百度了很多) 题目如下: 题目四:考试管理系统 (选做要求:使用图形用户界面) 分3种用户角色:教务员(具有管理权限).教师.学生 l  教务员:可以进行用户管理( ...

  4. DataGear数据可视化分析平台介绍

    DataGear 是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL.CSV.Excel.HTTP接口.JSON等多种数据源. 系统特点: 友好的数据源接入 支持运行时接 ...

  5. 使用 Java 在Excel中创建下拉列表

    下拉列表(下拉框)可以确保用户仅从预先给定的选项中进行选择,这样不仅能减少数据输入错误,还能节省时间提高效率.在MS Excel中,我们可以通过 "数据验证" 提供的选项来创建下拉 ...

  6. opencv库图像基础4绘图-python

    opencv库图像基础4绘图-python 1.绘画线条和简单图形 创建颜色字典和一个画布 import cv2 import numpy as np import matplotlib.pyplot ...

  7. vue使用cordova的大坑!!

    额,前段时间用 cordova 包了个 vue 项目,跑真机,完美.跑公司安卓系统虚拟机,垮. 原因找了很久,最后发现是路由的问题,使用了 createWebHistory ,去掉了 hash ,虽然 ...

  8. 案例7:将"picK"译成密码

    密码规则:用当前字母后面的第五各字符来代替当前字符.比如字符'a'后面的第5个字符为'f', 则使用'f'代替'a'.编写程序,实现该功能. 示例代码如下: #define _CRT_SECURE_N ...

  9. 26_H.264编码实战

    目录 使用FFmpeg命令进行H.264编码 使用FFmpeg代码实现H.264编码 1.获取编码器 2.创建上下文 3.打开编码器 4.创建 AVFrame 5.创建 AVPacket 6.打开文件 ...

  10. Spring Boot学习日记5

    启动器 spring-boot-starter 启动器:说白了就是SpringBoot的启动场景 比如spring-boot-starter-web,会帮我们自动导入web环境所有的依赖 spring ...