版本控制

版本控制(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. 【NLP学习其3.5】词嵌入的特性,为什么词之间会有联系?

    词嵌入的特性 现在你有了一堆嵌入向量,我们可以开始学习他们之间的特性了 前情提要:https://www.cnblogs.com/DAYceng/p/14962528.html 先把各向量重新命名便于 ...

  2. 以解析csv数据为例,讨论string、char[]、stream 不同类型来源是否能进行高性能读取解析封装可能性

    篇幅较长,所以首先列举结果,也就是我们的目的 核心目的为探索特定场景对不同类型数据进行统一抽象,并达到足够高性能,也就是一份代码实现,对不同类型数据依然高性能 以下为结果,也就是我们的目的: 对1w行 ...

  3. dotnet nuget的命令行上传(推送/发布)包到Nexus 3

    1.让Visual Studio在生成的时候也生成NuGet的包 在项目上点右键,选"属性",然后设置生成的时候制作NuGet的包. 英文版在这里打勾: 中文版在这里打勾: 重新生 ...

  4. 【Azure 应用服务】使用Python Azure SDK 来获取 App Service的访问限制信息(Access Restrictions)

    问题描述 为Azure App Service添加访问限制,需要Python Azure SDK来实现的示例代码. 问题解答 查阅Azure App Service的官方资料,使用Python SDK ...

  5. PostgreSQL、KingBase 数据库 ORDER BY LIMIT 查询缓慢案例

    好久没写博客了,最近从人大金仓离职了,新公司入职了蚂蚁集团,正在全力学习 OcenaBase 数据库的体系结构中. 以后分享的案例知识基本上都是以 OcenaBase 分布式数据库为主了,呦西. 昨天 ...

  6. 使用grafana+Prometheus监控时PromQL内置函数详解

    1.Prometheus简介 Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发, 是Googl ...

  7. STL-unordered_hashtable模拟实现

    #pragma once #include<vector> #include<string> #include<iostream> using std::cout; ...

  8. win上vscode配置ffmpeg

    参考博客https://blog.csdn.net/leixiaohua1020/article/details/38868499 https://blog.csdn.net/weixin_37515 ...

  9. mysql数据库表或行,被锁,杀死进程

    -- 查询进行 SHOW PROCESSLIST; -- 删除进程 kill 22459; -- 查找正在进行的 select * from information_schema.innodb_trx ...

  10. hadoop集群启动成功但进入web50070管理界面显示DataNode为0与集群运行,结果全为0的问题总结

    Hadoop完全分布式出现DataNode为0的解决方案 问题:在配置好Hadoop后,jps命令下看见Hadoop服务已经启动,namenode和datanode都已经启动,但进入Hadoop界面还 ...