版本控制

版本控制(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

现在影响力最大且使用最广泛的是 GitSVN

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. 为什么HashMap的键值可以为null,而ConcurrentHashMap不行?

    写在开头 昨天在写<HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!>这篇文章的时候,漏了一个知识点,知道晚上吃饭的时候才凸显想到,关于Concur ...

  2. [逆向] PE文件学习

    目录 概述 MS-DOS 头部 IMAGE_DOS_HEADER PE头 IMAGE_NT_HEADER IMAGE_FILE_HEADER IMAGE_OPTIONAL_HEADER32 数据目录列 ...

  3. 本地画板工具 Axure RP 9 顶替 drawio (补充Axure RP 8)

    本地画板工具 Axure RP 9 顶替 drawio 外链:https://wws.lanzoul.com/b03paemkf 密码:dmvj 9这个版本 win7 不支持 Axure RP 8 h ...

  4. aardio 代码格式化 自动保存 自定义 ctrl + s bug:这个快捷键是全局拦截

    aardio 代码格式化工具 https://gitee.com/pengchenggang/aardio---code-formatting-tool 修改内容 1 代码进行了一定的修改,默认ctr ...

  5. 记一个很好用的轻量级翻译软件 copytranslator

    软件下载主页: https://gitee.com/ylzheng/CopyTranslator/wikis/windows 可以设置始终置顶,监听剪切板,翻译起来非常方便

  6. [leetcode 496. 下一个更大元素 I] 单调栈

    单调栈的写法: import java.util.ArrayDeque; import java.util.Deque; import java.util.HashMap; import java.u ...

  7. Spring Boot学习日记18

    JDBCTemplate execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修改.删除等语句:bat ...

  8. openApi generator总是生成类名为 defaultApi

    生成器可以开启 useTags 设置,开启之后会根据 api 文档中的 tags 生成前缀类名,因此,要不生成 defaultApi 需要以下操作: 1.openApi 文档中每个 url 必须要有 ...

  9. .NET Emit 入门教程:第二部分:构建动态程序集(追加构建静态程序集教程)

    前言: 在本部分中,我们将深入探讨如何使用C# Emit 来创建动态程序集. 动态程序集是在运行时生成的,为我们提供了一种灵活.动态地构建和加载程序集的能力. 1. 程序集的概念 程序集是.NET中的 ...

  10. 大模型时代的PDF解析工具

    去年(2023年)是大模型爆发元年.但是大模型具有两个缺点:缺失私有领域知识和幻觉.缺失私有领域知识是指大模型训练时并没有企业私有数据/知识,所以无法正确回答相关问题.并且在这种情况下,大模型会一本正 ...