SVN(Subversion)版本控制系统详细入门教程(之篇二TortoiseSVN的安装汉化与使用教程、Git与SVN的区别与比较分析)

本文详细介绍了SVN客户端TortoiseSVN的安装与使用,并深入对比了SVN与Git两种版本控制系统的区别与优劣。从分布式与集中式管理、版本库特性、提交流程、分支管理等方面进行了全面分析。

上一篇:SVN(Subversion)版本控制系统详细入门教程(之篇一SVN简介、SVN安装、SVN本地服务器搭建)

上一篇博客介绍了SVN的安装使用及SVN服务器VisualSVN Server的搭建过程。

本篇博客介绍SVN客户端TortoiseSVN的安装与使用教程、另一种版本控制系统Git与SVN的区别与比较分析。

一、TortoiseSVN的安装汉化

需准备TortoiseSVN的安装包及汉化包

  1. SVN客户端:TortoiseSVN下载
    下载地址:
    https://osdn.net/projects/tortoisesvn/storage/1.10.2/Application/TortoiseSVN-1.10.2.28392-x64-svn-1.10.3.msi/
    在这里插入图片描述
  2. TortoiseSVN汉化包下载
    下载地址:
    同上TortoiseSVN的下载地址,下拉便会看到各种语言包的下载
    在这里插入图片描述
    开始安装
    双击下载的TortoiseSVN程序包开始安装
    一直点击Next
    如果你喜欢用命令行操作,请务必记得勾选command line client tool为will be install on local hard driver,不用命令行的跳过这一步。
    在这里插入图片描述
    然后一路next即可安装。安装完毕后,在任意地方右键查看快捷菜单。发现TortoiseSVN选项即表示安装成功。
    在这里插入图片描述
    TortoiseSVN汉化
    双击安装下载的汉化包
    在安装的最后一步,勾选上那个框即可立即应用配置
    在这里插入图片描述
    再回到桌面右击,可看到已经汉化成功了
    在这里插入图片描述

中文使用手册下载

在这里插入图片描述在这里插入图片描述

三、使用教程

检出项目

假如项目已经在服务器的仓库里(我们上一篇博客就在自己的电脑服务器上创建了一个仓库Test,可用它作为本次的例子),我们现在把它检出到本地另一个文件夹中。
在这里插入图片描述

首先创建一个空文件夹Test2。在空文件夹内右键,选择“SVN检出…”。
在这里插入图片描述
在这里插入图片描述
填写用户名和密码
在这里插入图片描述
检出完成
在这里插入图片描述
此时在你的Test2目录下就有与Test完全相同的内容,Test2此时即是Test的一个副本,现在可以开始对Test2进行相应的操作了。

导入项目
但是有时候你已经在本地建立好了项目,需要把你项目推到SVN上,此时应怎么做呢?
在空白处右击,选择导入项目

但是有时候你已经在本地建立好了项目,需要把你项目推到SVN上,此时应怎么做呢?
右键选择TortoiseSVN菜单项,选择版本库浏览器。
在这里插入图片描述
在这里插入图片描述

假设现在要加入一个txt文件进入版本库
在空白处右击,选择“加入文件/加入文件夹”,然后选择文件的相应目录
在这里插入图片描述
填入改动信息,务必要输入提交信息。这样别人才能知道你干了什么
在这里插入图片描述
导入成功后就有相应的目录
在这里插入图片描述
但是,不要以为导入成功就可以了。你还得重新检出,重新检出的项目才是受SVN控制的,务必记得检出。
在addText.txt上右键,检出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检出过后,Test2里面的内容
在这里插入图片描述
再次右键Test2文件夹菜单变成了这样:
在这里插入图片描述

提交

绿色表示当前文件没有被修改过(看不见颜色的重启下电脑就好了)。
在这里插入图片描述
假设现在我在修改addText.txt文件中的内容
在这里插入图片描述
然后颜色就变成了这样,!发现现在变成了红色,红色表示已修改。

在这里插入图片描述
怎么提交修改?
在被修改的文件addText目录下,右键选择提交。
在这里插入图片描述
在这里插入图片描述
提交完毕后,可以发现又恢复到了绿色
假如现在加入了一个新文件newFile。可以看出是蓝色的。蓝色表示不属于版本库中的未知文件,未知文件是不能提交的。
在这里插入图片描述
记住选择增加把它加入到版本库里面去。
在这里插入图片描述
增加完毕后,变成了蓝色加号,表示新增加的版本库文件。
在这里插入图片描述
接下来,只需写代码,然后提交即可。
删除文件也应该右键提交,如下。
在这里插入图片描述
记得随时检查你的文件状态,如果没有添加到版本控制里要及时添加进去,不然你的文件提交不上去。

更新
假如你和B同学在协作。B同学写完代码提交到了SVN上,如果你想获取最新修改,就需要选择更新(如果服务器上已经有别人提交过的新的,你是提交不上去的,必须先更新再提交)。

怎么知道服务器有没有更新?你可以直接选择更新,有没有更新一下就知道。或者右键检查修改,然后检查版本库,就能看到服务器上改了哪些文件。
假设现在修改了addText文件
右击:
在这里插入图片描述
右键选择与基础版本比较
在这里插入图片描述
左边的表示服务器上的代码,左边的表示你的代码。
在这里插入图片描述
如果有别人的修改,记得及时更新到本地然后再继续工作。

但是有时候更新会冲突,比如你和你的同伴上修改了同一个地方。
这时候你需要更新下来解决冲突。

查看日志

选择显示日志,可以看出团队里面的人干了什么。
在这里插入图片描述
在这里插入图片描述
可以看出谁谁谁,什么时间,干了什么事。最后那一列信息是自己提交的时候写的。建议大家提交时务必要填写提交信息,这样别人一看就知道你干了什么。提交信息对于自己也是有好处的,时间长了也能看到当初做了什么。

版本回滚

如果你改了东西,但是还没有提交,可以使用还原功能。
假设现在我删除了addText文件中的一行,
在这里插入图片描述
在这里插入图片描述
可以右击,选择SVN还原
在这里插入图片描述
还原后,又变回原来的样子了
在这里插入图片描述
在这里插入图片描述
但是如果我们写错了东西并且提交了上去怎么办?
通过版本回滚可以将文件恢复到以前的版本。右键更新至版本,通过查看日志来选择版本,然后回滚即可。
在这里插入图片描述
在这里插入图片描述
有时候我们需要查看以前版本的代码。此时我们可以新建个文件夹检出到指定版本。
在这里插入图片描述

版本控制

版本控制有好几种方法,如下。

  1. 在提交发布版本时添加版本信息,这是最简单的一种方法。
    在这里插入图片描述
  2. 打标签
    每次发布版本时应该打标签。右键选择分支/标记。在至路径以版本号打上标签即可
    在这里插入图片描述
    在这里插入图片描述
    这样你就有了一个v1.0版本的标签。
    以后如果你想查看某个版本的代码,只需切换过去就行
    在这里插入图片描述

四、Git与SVN的区别与比较分析

目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢?
SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的版本控制器!这是两者之间最核心的区别。

SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

Git每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。Git不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
在这里插入图片描述
在这里插入图片描述
集中式版本控制系统:
版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作,工作活了,再把自己的修改推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。

分布式版本控制系统:
首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
区别
(1)Git是分布式的,而SVN不是分布而是集中式的,需要说明的是Git并不是目前唯一的分布式版本控制系统,还有比如Mercurial等,所以说它们差不许多。不过话说回来Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个LocalRepository以即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。

从上面看GIt真的很棒,但是GIt adds Complexity,刚开始使用会有些疑惑,因为需要建两个Repositories(Local Repositories & Remote Repositories),指令很多,除此之外你需要知道哪些指令在Local Repository,哪些指令在Remote Repository。

(2)Git把内容按元数据方式存储,而SVN是按文件:因为git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。

(3)Git没有一个全局版本号,而SVN有:目前为止这是跟SVN相比Git缺少的最大的一个特征。

(4)Git的内容的完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

(5)Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。

(6)刚开始用时很狗血的一点,SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git还是比较少的出现这种情况。

(7)克隆一份全新的目录以同样拥有五个分支来说,SVN是同时复製5个版本的文件,也就是说重复五次同样的动作。而Git只是获取文件的每个版本的 元素,然后只载入主要的分支(master)在我的经验,克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!而Git只用了区区的1分钟!

(8)版本库(repository):SVN只能有一个指定中央版本库。当这个中央版本库有问题时,所有工作成员都一起瘫痪直到版本库维修完毕或者新的版本库设立完成。而 Git可以有无限个版本库。或者,更正确的说法,每一个Git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。如果主要版本库(例如:置於GitHub的版本库)发生了什麼事,工作成员仍然可以在自己的本地版本库(local repository)提交,等待主要版本库恢复即可。工作成员也可以提交到其他的版本库!

(9)分支(Brach)不同。
分支在SVN中一点不特别,分支在SVN就是版本库中的另外一个完整目录,且这个目录拥有完整的实际文件。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分狗血。而 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可。无痛无痒。

然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。Git的分支名是可以使用不同名字的。例如:我的本地分支名为OK,而在主要版本库的名字其实是master。最值得一提,我可以在Git的任意一个提交点(commit point)开启分支!(其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开啟分支。)

(10)提交(Commit)上的不同:在SVN,当你提交你的完成品时,它将直接记录到中央版本库。当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”(git push)到主要版本库即可。Git的“推”其实是在执行“同步”(Sync)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值