一、何谓版本控制

它是一种软件工程籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新,它透过文档控制记录程序各个模块的改动,并为每次改动编上序号,并且编辑错误之后还可以回溯到以前的版本

二、可供我们选择的版本控制系统

1、VCS (本地版本控制)

2、VSS、CVS(集中版本控制)

3、ClearCase、SVN、Perforce、TFS(集中版本控制)

4、Mercurial(水银/水星)、Git(分布式版本控制)

差异:

1.Git和其他版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生了变化,而多数的其他系统则只关心文件内容的具体差异,它们在每个版本中记录着各个文件的具体差异。

2. Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS,优于CVS之处 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。

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

三、svn与git

1)适用对象不同。Git适用于参与开源项目的开发者。他们由于水平高,更在乎的是效率而不是易用性。Svn则不同,它适合普通的公司开发团队。使用起来更加容易。

2)使用的场合不同。Git适用于通过Internet,有多个开发角色的单个项目开发,Svn适合企业内部由项目经理统一协调的多个并行项目的开发。

3)权限管理策略不同。Git没有严格的权限管理控制,只要有帐号,就可以导出、导入代码,甚至执行回退操作。Svn则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制。区分读、写权限。更严格的,不支持回退操作。保证代码永远可以追踪。

4)分支(branch)的使用范围不一样。Git中,你只能针对整个仓库作branch,而且一旦删除,便无法恢复。而svn中,branch可以针对任何子目录,它本质上是一个拷贝操作。所以,可以建立非常多、层次性的branch,并且,在不需要时将其删除,而以后需要时只要checkout老的svn版本就可以了。

5)基于第三点,Git适用于单纯的软件项目,典型的就是一些开源项目,比如Linux内核、busybox等。相反,Svn擅长多项目管理。比如,你可以在一个svn仓库中存放一个手机项目的bsp/设计文档/文件系统/应用程序/自动化编译脚本,或者在一个svn中存放5款手机项目的文件系统。git中必须建立n(项目数)*m(组件数)个仓库。Svn中只需要最多n或者m个就可以了。

6)Git使用128位ID作为版本号,而且checkout时要注明是哪个branch,而svn使用一个递增的序列号作为全局唯一的版本号,更加简明易懂。虽然可以使用gittag来建立一些文字化的别名,但是毕竟那只是针对特殊版本。

7)可跟踪性,git的典型开发过程为:建立分支,进行开发,提交到本地master,删除分支。这样做的后果是以前的修改细节会丢失。而在svn下做同样的事情,不会丢失任何细节。这里是一个有趣的链接,表明了git下典型的工作方式:(以master为核心,不断创建新branch,删除旧branch):

http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt

8)局部更新,局部还原。SVN由于是在文件夹建立一个.svn文件夹来实现管理,所以可以很简单实现局部更新或者还原。假如你只希望更新某些部分,则svn可以很好实现。同时代码写错了,同时可以很好实现局部还原,当然git也可以通过历史版本还原,但是无法简单地实现局部还原。

四、svn常规操作

1.TortoiseSVN官网地址:http://tortoisesvn.tigris.orgCheckout下载与电脑对应的软件。

2.ckeckout(检出) 点击鼠标右键checkout选项指定资源库,导出地址点击ok即可。

3.添加文件或者文件夹 在检出的文件中进行操作,首先在里面添加文件或者文件夹-->鼠标

右键点击tortoiseSVN选项-->add-->SVN commit

4. 把一个项目文件夹发布到SVN服务器上 在eclipse上配置svn插件http://subclipse.tigris.org/update_1.12.x

鼠标右键-->team-->share project-->SVN-->next-->finish

5. Update更新 鼠标右键-->team-->update

6. Export导出 鼠标右键-->tortoiseSVN选项-->export

7. 历史版本 eclipse 右键-->team-->显示历史资源版本 文件夹 右键-->tortoiseSVN选项-->show log

8. 锁定 鼠标右键-->tortoiseSVN选项-->get lock

9. 备份 文件操作 鼠标右键-->tortoiseSVN选项-->export

10. 分之 eclipse 鼠标右键-->team-->分之/标记 指定分之名-->鼠标右键-->team-->update

文件鼠标右键-->tortoiseSVN选项-->branch/tag

11.冲突 当不同用户同时操作一行代码的时候,提交会有冲突,update即可。

Android版本控制系统及其间的差异的更多相关文章

  1. [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境

    [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...

  2. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  3. GIT分布式版本控制系统

    Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...

  4. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

  5. [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

    [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...

  6. GIT(分布式版本控制系统)

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.[1] Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本 ...

  7. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  8. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  9. 如何选择版本控制系统之二---Git的研发应用场

    之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的 ...

随机推荐

  1. Simple XML

    官网:http://simple.sourceforge.net/home.php 截止目前最新版本:simple-xml-2.7.1.jar 特点: jar lib文件只有360K左右的大小 它的使 ...

  2. 从IRP说起(转)

    原文链接:http://www.cnblogs.com/zhuyp1015/archive/2012/03/14/2396595.html IRP(I/O request package)是操作系统内 ...

  3. Linux内核,文件系统移植过程中出现的一些问题与解决办法

    1.bootm地址和load address一样 此种情况下,bootm不会对uImage header后的zImage进行memory move的动作,而会直接go到entry point开始执行. ...

  4. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇02:内购如何实现》

    2.内购如何实现 内购概述: 游戏内购是指玩家在游戏中,用金钱获取游戏道具的一种方式.开发者从玩家内购之中获得开发游戏的收益,因此大量游戏都有内购模块.下面我们以在手机IOS平台实现跑酷游戏内购为例, ...

  5. 可以使用Markdown了?

    园子果然领先 1.标题类 一级标题 二级标题 三级标题 四级 六级 怎么可以用#号?上传上去看看 2.换行 第一行 换一行 在换一行 3.多个下划线 the_odd_egg odd 斜体用星号 4.删 ...

  6. 如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

    如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和 ...

  7. VS2010 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [3]”转换为“LPCTSTR”

    VS2010 (VC2010)建立工程时默认的字符集是Unicode,所以在代码中使用MessageBox时需要输入Unicode,用TEXT()这个宏输入参数,否则会报错:   代码:Message ...

  8. SHH入门:Spring框架简介

    (1)Spring 七大模块 核心容器:核心容器提供Spring 框架的基本功能.核心容器的主要组件是 BeanFactory,它是工厂模式的实现.BeanFactory 使用控制反转 (IOC) 模 ...

  9. js使用技巧大全

    1.防止重新构建 var constructedHtml = ""; for(var i = 0,len = arr.length;i < len;i++){ constru ...

  10. Java中方法的重载

    Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...