svn和git有什么区别? webstorm怎样配置svn?

大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师深度思考中的知识点——SVN和Git有什么区别? webstorm怎样配置svn?


一.背景介绍


为什么要说这两款软件的区别?

这两款版本控制软件应该是现在最流行的版本控制软件。我们在做任务做项目的时候,特别强调要学习使用这两款软件。

如果是一个人做项目、任务,很难有机会充分感受到它们的优点和坑点。(git还是能感受到)。

多人合作开发,由于项目的复杂性,一个模块或者一个文件可能需要多人同时编写,这时就能体现出版本控制软件的强大与适用。

无论是有新需求、bug、文件冲突还是安全性等问题,它们都可以很好的协助我们进行解决。




二.知识剖析

简要介绍一下SVN和GIT

细数版本控制软件,多达十几种,像VSS、CVS、ClearCase、PVCS等等这些我这个菜鸡听都没听说过的软件也曾经有过很多用户。

游戏公司用Perforce比较多,似乎是因为在二进制文件的支持和大文件存储上,Perforce占优。

而在开发者眼中似乎只存在SVN和GIT的存在,为什么呢?

因为它们是开源免费的啊!


SVN介绍


SVN是Subversion的简称,是一个开源代码集中的版本控制系统,支持大多数常见的操作系统。作为一个开源的版

本控制系统,Subversion管理着随时间改变的数据。这些数据集中放置在一个中央资料档案库中。这个档案库很像

一个普通的文件服务器,它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历

史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

集中式代码管理


svn和git有什么区别? webstorm怎样配置svn?_第1张图片

集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:

开始新一天的工作:

1、从服务器下载项目组最新代码。

2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码)。

3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器.


Git介绍

Git是开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。分布式相比于集中式的最大区别在

于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库.


svn和git有什么区别? webstorm怎样配置svn?_第2张图片

分布式代码管理


分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库服务器。工作的时候,就不需

要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?

比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推

送给对方,就可以互相看到对方的修改了。



三.常见问题


1.SVN和Git有什么区别?

2.webstorm怎样配置svn?



四.解决方案

SVN和Git有什么区别?

1、集中式、分布式

1.1、SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器

SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch,merge ,rebase,Git擅长的是程序代码的版本化管理。

1.2、GIT跟SVN一样有自己的集中式版本库或服务器。

但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上check out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍然能够提交文件,查看历史版本记录,创建项目分支,对一些人来说,这好像没多大用处,但当你突然遇到没有

2、版本库与工作区

2.1、Subversion的工作区和版本库是截然分开的

Subversion 的工作区和版本库物理上分开:Subversion的版本库和工作区是存储在不同路径下,一般是在不同的主机中,Subversion的企业级部署中,版本库在服务器上,只能通过 https, http, svn 等协议访问,而不能直接被用户接触到。

2.2、Git的工作区和版本库是如影随形的。

Git 的版本库和工作区在同一个目录下,工作区的根目录有一个.git的子目录,这个名为 .git的目录就是版本库本身,它是Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。所以千万要小心删除这个文件。

3、分支管理

3.1、SVN,分支是一个完整的目录。且这个目录拥有完整的实际文件。如果工作成员想要开啟新的分支,那将会影响“全世界”!每个人都会拥有和你一样的分支。如果你的分支是用来进行破坏工作(安检测试),那将会像传染病一样,你改一个分支,还得让其他人重新切分支重新下载,十分狗血。

3.2、 Git,每个工作成员可以任意在自己的本地版本库开啟无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用, 我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时, 我只要把它从我的本地版本库删除即可。无痛无痒。

3.3、 Git里分支的切换比SVN方便很多。Git的分支名是可以使用不同名字的。例如:我的本地分支名为OK,而在主要版本库的名字其实是master。最值得一提,我可以在Git的任意一个提交点(commit point)开启分支!所以不要吝啬开分支,git开分支的代价很小。(其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开啟分支。)

4、权限管理

.Subversion通过对文件目录授权来实现权限管理,子目录默认继承父目录的权限。但是也有缺憾,即权限不能在分支中继承,不能对单个文件授权。例如为 /trunk及其子目录的授权,不能继承到分支或者标签中相应的目录下。

Git 的授权做不到Subversion那样精细。Git的授权模型只能实现非零即壹式的授权,要么拥有全部的写权限,要么没有写权限,要么拥有整个版本库的读权限,要么禁用。

5、存储方式

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


优缺点比较

          SVN优缺点

优点:

1、 管理方便,逻辑明确,符合一般人思维习惯。

2、 易于管理,集中式服务器更能保证安全性。

3、 代码一致性非常高。

4、 适合开发人数不多的项目开发。

缺点:

1、 服务器压力太大,数据库容量暴增。

2、 如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。

3、 不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。


      Git优缺点

优点:

1、适合分布式开发,强调个体。

2、公共服务器压力和数据量都不会太大。

3、速度快、灵活。

4、任意两个开发者之间可以很容易的解决冲突。

5、离线工作。 。

缺点:

1、学习周期相对而言比较长。

2、不符合常规思维。

3、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。



2.webstorm怎样配置svn?


下载安装sliksvn

在webstorm上配置sliksvn


svn和git有什么区别? webstorm怎样配置svn?_第3张图片

输入svn插件安装的位置



svn和git有什么区别? webstorm怎样配置svn?_第4张图片

如何checkout代码

根据服务器情况选择svn信息,添加好地址就可以导入项目的版本库了。

svn和git有什么区别? webstorm怎样配置svn?_第5张图片

SVN服务器地址:

如何提交代码,


svn和git有什么区别? webstorm怎样配置svn?_第6张图片

在文件上选择右键在弹出来的提示框点击commit,就可以看自己更

改过的文件。


svn和git有什么区别? webstorm怎样配置svn?_第7张图片

五.编码实战



六.扩展思考

SVN 和 Git 哪个更适用于项目管理?

SVN更适用于项目管理, Git仅适用于代码管理。

一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物,  包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。



七.更多讨论


八.参考文献

参考一:SVN和Git 介绍,区别,优缺点,适用范围总结 

参考二:版本控制系统-集中式VS分布式

参考三:使用webstorm上传代码到github

参考四:为什么很多大企业都在用收费的perforce而不是免费的svn或者git?

参考五:Git 使用规范流程

参考六:svn老鸟转用git必须理解的概念

参考七:话说Svn与Git的区别

参考八:常见的版本控制管理工具


PPT连接:

ppt

视频链接


svn和git有什么区别?webstorm怎样配置svn?_腾讯视频


如果这篇文章对你有帮助,并且使你对修真院免费在线学习感兴趣,可以通过我的链接注册成员会,这会使我得到学分(兑换学时)延长学习时间:

邀请链接:http://www.jnshu.com/login/1/13374512

邀请码:13374512

你可能感兴趣的:(svn和git有什么区别? webstorm怎样配置svn?)