git基础之各版本控制系统介绍

目录
  • 1、什么是版本控制系统
  • 2、我们为什么要用版本控制
  • 3、版本管理系统的演变
    • (1)本地版本控制系统
    • (2)集中化版本控制系统
    • (3)分布式版本控制系统

1、什么是版本控制系统

版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。

有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较不同版本文件的变化细节,查出最后是谁修改了哪个地方。也就是无论文件最后被修改成什么样子,你都可以轻松恢复到原先的样子,但是额外增加的工作量却微乎其微。

2、我们为什么要用版本控制

世界上无数大大小小的开发项目,都在使用各种各样的版本控制系统,原因在于它的优点对于一个项目开发来说是无比重要。

比如一个最简单的开发团队,也许就两三个人,他们共同完成一个软件的开发。每个人都在修改、添加、删除着自己本地硬盘上的代码,当他们需要把这些代码汇总起来时,麻烦出现了。到底谁改了哪些文件?具体是文件里的哪部分被改动过?A人员修改的内容会不会把B人员的修改的内容覆盖掉,汇总工作就变得很危险,需要非常小心,一旦出错后果不堪设想。显然此时效率将会是无比的低下,如果某个地方出错,可能整个汇总工作就要重来一遍。这只是两三人的小团队,如果是几十人几百人的大团队呢?那将会是噩梦。

如果这个团队采用了版本控制,那么版本控制软件在每次提交文件的时候,都会主动合并所有人的修改,并解决可能发生的冲突。每个人手里一直都是汇总好的代码,当开发进行到一定阶段,可以直接拿去测试,不需要再有额外的工作来浪费时间。

3、版本管理系统的演变

(1)本地版本控制系统

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

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

这种形式主要实现了基本的代码版本管理,但缺点是无法让多人同时对一个版本库进行修改。这个也和当时软件规模不够大有关,也没有这样的需求。

(2)集中化版本控制系统

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

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

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

集中式版本控制系统另外一个大的问题就是必须联网才能工作,如果不能连接到中央服务器上,就不能对文件进行提交,还原,对比等操作。

(3)分布式版本控制系统

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

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

参考:

http://www.ydmsh.com/www/Blog/Show/id/147/

以上就是git基础之各版本控制系统介绍的详细内容,更多关于git版本控制系统的资料请关注我们其它相关文章!

(0)

相关推荐

  • subversion服务端配置步骤详解

    配置过程:1.安装subversion 服务端软件 复制代码 代码如下: yum install subersion -ymkdir -p /data/svn_svncd  /data/svn_svn 2. 创建代码仓库 复制代码 代码如下: svnadmin create  svn_version 配置权限 复制代码 代码如下: vim conf/svnserve.confpassword-db = passwd  #取消注释anon-access = noneauth-access = wr

  • 使用版本控制原因及Git与Subversion介绍

    目录 前言 什么是版本控制? 那为什么还要力挺版本控制呢? Subversion 版本控制选择 分布式版本控制系统 Mercurial git 总结 前言 不知道什么是版本库的,扇自己两个大嘴巴:知道但不用的,扇自己四个大嘴巴.快扇去.你真扇了?那你是个大傻瓜.扇什么扇,有扇自己的功夫,还不赶紧去用版本库. 上面那句话是我根据<版本控制之道:使用Git>上一句读者感言发展而来的.版本控制真的那么重要,真的那么好吗? 什么是版本控制? [此段写给需要扇自己两个大嘴巴的人,以及部分需要扇四个大嘴巴

  • SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案

    SVN出现提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决方案 第一种方法: 通过svn插件来清理,首先选中项目,右键,选择team->refresh/cleanup即可.然后再更新文件就不会提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-lockeddir了.但

  • git基础之各版本控制系统介绍

    目录 1.什么是版本控制系统 2.我们为什么要用版本控制 3.版本管理系统的演变 (1)本地版本控制系统 (2)集中化版本控制系统 (3)分布式版本控制系统 1.什么是版本控制系统 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制. 有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较不同版本文件的变化细节,查出最后是谁修改了哪个地方.也

  • Git基础之git与SVN版本控制优缺点区别分析

    目录 Git和SVN的区别 (1)SVN(集中式版本管理系统) (2)Git(分布式版本管理系统) 2.SVN和Git的优缺点 (1)SVN优缺点 (2)Git优缺点 3.总结一下 Git和SVN的区别 (1)SVN(集中式版本管理系统) 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新. Subversion属于集中式版本控制系统. 好处: 每个人都可以一定程度上看到项目中的其他人正在做些什么.

  • Git基础学习之分支操作的示例详解

    目录 1.新建一个分支并且使分支指向指定的提交对象 2.思考 3.项目分叉历史的形成 4.分支的总结 1.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch branchname commitHash. 我们现在本地库中只有一个 master 分支,并且在 master 分支有三个提交历史. 需求:创建一个 testing 分支,并且testing 分支指向 master 分支第二个版本. # 1.查看提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/

  • Git基础之git在项目中的协作模式

    目录 1.分布式工作流程 2.集中式工作流 3.分支工作流 4.GitFlow 工作流(最流行) 5.Forking 工作流(偶尔使用) 6.总结 1.分布式工作流程 与传统的集中式版本控制系统(CVCS)相反,Git 的分布式特性,使开发者间的协作变得更加灵活多样. 在集中式版本控制系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像. 而在 Git 中,每个开发者同时扮演着节点和集线器的角色.也就是说, 每个开发者既可以将自己的代码贡献到其他的仓库中,同时也能维护自己的公开仓

  • Git基础学习之文件删除操作命令详解

    目录 1.删除文件说明 2.删除文件操作 (1)仅删除暂存区的文件 (2)完全删除文件 3.本文用到的命令总结 1.删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态. 若要是该文件未被Git管理,在工作区直接进行删除即可.(不演示) 但是,若该文件已经经过多次git add与git commit操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交. 可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未

  • Git基础学习之tag标签操作详解

    目录 共享标签 推送本地的指定标签 推送本地所有为推送的标签 查看结果 删除标签 删除本地标签 删除远程标签 修改标签指定提交的代码 标签在.git目录中的位置 本文中所使用到的命令 共享标签 默认情况下,git push 命令并不会传送标签到远程仓库服务器上. 在创建完标签后,你必须显式地(手动)推送标签到远程服务器上. 需要将标签推送到远程版本库作为一个发行版本,可以通过以下两种方式: 推送本地的指定标签 这个过程就像共享远程分支一样,你可以执行命令: git push origin <ta

  • Git基础学习之分支基本操作详解

    目录 1.创建分支 (1)创建分支 (2)图示理解 2.查看分支列表 3.分支切换 4.查看所有分支的最后一个提交 5.删除分支 1.创建分支 (1)创建分支 Git 是怎么创建新分支的呢? 很简单,就是要创建一个可以移动的新的指针. 比如,创建一个testing分支, 你需要使用命令:git branch testing. 示例: # 1.查看本地版本库历史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ gi

  • Java基础篇之分布式版本控制工具Git

    目录 版本控制 版本控制分类 1.本地版本控制 2.集中版本控制SVN 3.分布式版本控制 Git和SVN的区别 Git的历史: 常用的Linux命令 Git配置 Git基本理论(重要) Git项目搭建 本地仓库搭建 克隆远程仓库 Git文件操作 查看文件状态 忽略文件 使用码云 Git分支 版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术. 实现跨区域多人协同开发

  • Git代码提交流程及git命令汇总(基础篇)

    基本了解 git命令是一些命令行工具的集合,它可以用来跟踪,记录文件的变动.比如你可以进行保存,比对,分析,合并等等.这个过程被称之为版本控制.已经有一系列的版本控制系统,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等. Git是分布式的,这意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统,我们称之为仓库.如果是多人协作的话,你需要还需要一个线上仓库,用来同步信息.这就是GitHub, BitBucket的工作. 自己用Git有一段

  • Git获取本地仓库及基础操作指令总结

    目录 一.Git获取本地仓库 二.Git基础操作指令 1.查看修改的状态(status) 2.添加工作区到暂存区(add) 3.提交暂存区到本地仓库(commit) 4.查看提交日志(log) 5.版本回退 6.添加文件至忽略列表 知识点补充 一.Git获取本地仓库 要使用Git对我们的代码进行版本控制,首先需要获得本地仓库 1.在电脑任意的磁盘位置创建一个空目录(例如test)作为我们的本地Git仓库 2.进入这个目录中,点击右键打开Git bash窗口 3.执行命令git init 4.如果

随机推荐