本文目录:

      版本控制介绍(VCS)

      本地版本控制系统(RCS)

      集中化的版本控制系统(CVCS)Svn

      分布式版本控制系统(DVCS)  Git

================================================================================================

关于版本控制介绍

什么是“版本控制”?我为什么要关心它呢?

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况以及回溯的系统。 任何类型的文件都可以进行版本控制。

如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。

有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。

使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。

本地版本控制系统

许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。 有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。

Figure 1. 本地版本控制.

其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。 甚至在流行的 Mac OS X 系统上安装了开发者工具包之后,也可以使用 rcs 命令。 它的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

集中化的版本控制系统

接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作?

于是,集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。 这类系统,诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。 多年以来,这已成为版本控制系统的标准做法。

Figure 2. 集中化的版本控制.

这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制系统

于是分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

Figure 3. 分布式版本控制.

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

本文章来源:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6

什么是版本控制?(git,svn等都属于版本控制工具)相关推荐

  1. Introduction of Version Control/Git, SVN

    Introduction of Version Control/Git, SVN 什么是版本控制? 你可以把一个版本控制系统(缩写VCS)理解为一个"数据库",在需要的时候,它可以 ...

  2. 使用SVN+apache搭建一个版本控制服务器

    服务端: IP:192.168.10.63 服务概述: SVN(subversion)是近年来崛起的版本管理工具,是CVS的接班人.目前,绝大多数开源软件都使用svn作为代码版本管理软件.作为一个运维 ...

  3. Mac下从安装Git到使用github进行版本控制(git命令/Xcode管理)

    个人在iOS的开发过程中,经常会用到第三方类库,而这些类库大都是在GitHub上的,不得不说GitHub确实是一个非常酷的网站,实用一点说这里可以学习到很多的东西,也可以和世界各地的开发人员接触,势利 ...

  4. idea svn回退版本_版本控制 -- idea 整合 SVN

    前言 现在 GIT 确实是最火的 版本控制. SVN 有被淘汰的感觉.但是.在小型团队中,不需要这种大范围的代码提交以及修改的情况下. 用 SVN 的效率并不会弱于 GIT .尤其是目前 GIT 偶尔 ...

  5. 分布式版本控制--GIT

    一.GIT和SVN的区别 SVN采用的是集中式版本控制,即多个客户端访问一个服务器.只有在服务器上有一个远程仓库.提交代码直接提交到远程仓库.且SVN是没有暂存区概念的. GIT使用的是分布式版本控制 ...

  6. git svn cygwin_exception

    git for windows 2.5 版本发布了,更新之后,使用git svn的时候,就出错 git svn rebase Or git svn dcommit After a update git ...

  7. 版本控制之svn命令行下检出、提交、更新

    2019独角兽企业重金招聘Python工程师标准>>> 4 使用命令行模式访问SVN服务器  4.1 检出  ①首先进入自己的工作目录,例如:D:\DevWorkSpace\SVNS ...

  8. Git笔记(1) 版本控制

    Git笔记(1) 版本控制 1. 关于版本控制 2. 本地版本控制系统 3. 集中式版本控制系统 4. 分布式版本控制系统 1. 关于版本控制 版本控制是一种记录一个或若干 文件内容变化,以便将来 查 ...

  9. 嵌入式Linux入门4:版本控制git的使用

    本文介绍版本控制git的使用.git的使用,网络上有很多资料,笔者使用git多年,因此本文列出简单操作命令,顺便说一说使用经验. 一.Windows篇 由于嵌入式Linux使用的uboot.kerne ...

最新文章

  1. 常用memcached命令详解
  2. 使用 SCons 轻松建造程序
  3. EL表达式和Jstl常见的用法
  4. Redis(十三):Redis实现乐观锁
  5. Detours的作用和实例(hook、钩子)
  6. 【Day05】Html5 有哪些新特性?如何处理 Html5 新标签的浏览器兼容问题?如何区分 Html 和 Html5?
  7. 并发编程---ConcurrentHashMap源码解析
  8. 使用Filter防止浏览器缓存页面或请求结果
  9. python八大排序算法 间书_Python 八大排序算法速度比较
  10. PHP动态属性和stdclass
  11. 解决IE7中移动文件夹无法收藏问题
  12. Windows10系统服务优化及分析(批处理)
  13. 手机wifi显示连接到服务器地址,手机连接路由器wifi上网总是提示正在获取IP地址怎么办...
  14. JS打印表格时边框缺失问题
  15. 数据库应用——MyCat代理MySQL集群
  16. python安装pillow报错
  17. 计算机主板上方便用户自己安装,一种计算机主板卡接安装锁紧装置的制作方法...
  18. 马蜂窝用户内容贡献能力模型构建
  19. 简要介绍COBIT 5
  20. Django 中CSRF中间件 'django.middleware.csrf.CsrfViewMiddleware',

热门文章

  1. 细粒度图像分类论文研读-2018
  2. birt使用quartz框架实现自动生成报表
  3. 使用cmd命令在桌面上新建一个文件夹,且在文件夹中新建一个.java文件,使用cmd命令实现.java文件的编译运行
  4. 数据库建模与数据库导入
  5. 标准linu休眠和唤醒机制分析(二)
  6. 2022下半年系统集成项目管理工程师易混淆知识点:职能型、矩阵型、项目型组织结构
  7. 基于物联网技术的能源管理系统设计
  8. 详解Instagram价值7.5亿美元的简洁技术(PPT)
  9. java 报502错误_后台发布文章,报502错误
  10. DQL查询数据(最重要)