SVN入门图解教程(超详细)

一、总结

一句话总结:

二、SVN入门教程

1. 什么是SVN

SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。

作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。

这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。

Git – 版本控制系统。

SVN是集中式,Git是分布式。

1.1. SVN工作原理

1.2. 我们使用SVN能做什么?

1、 多人共享同一的资源,并且可以对资源实现修改和更新;

2、 记录资源的每一次变更,以及记录更改该资源的人,并且可以恢复到之前的任何一个修改点;

2. 安装

SVN的安装分为2部分,第一部分是服务端安装,第二部分的客户端安装。

注意:一般情况下,我们只需要安装客户端即可,因为在企业中服务端是否运维来维护的,我们只需要开通一个账号即可。

常用的客户端又分为2种,第一种是安装在操作系统中的客户端,另外一种是Eclipse的插件。

2.1. 服务端安装(windows)

选择相应的文件安装。

安装完成后会在系统服务中有SVN服务项,并且默认是开机启动。

打开管理工具:

至此,服务端安装完成。

2.2. 客户端安装

先安装客户端,再安装语言包。

点击右键查看是否有SVN选项。

接下来安装语言包:

选择中文:

中文生效:

此处客户端安装完成!

2.3. Eclipse插件安装

3. 创建资源库和用户

3.1. 创建用户

3.2. 创建资源库

资源库:用户提交文件到SVN,存放文件的仓库。

我们选择自定义权限:

创建完成:

测试:

资源库创建完成。

3.3. svn的几个操作说明:

1、Check out(检出):从服务器端取得代码

把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check out”。使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击“ok”即可。

2、Update(更新):更新项目代码

以前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会自 动更新。当然,你也可以删除掉本地代码,重新check out。使用具体步骤为:在要更新的项目上点击鼠标右键,选择“SVN Update”项即可。

3、Commit(提交):将本地代码上传到服务器

当修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。如果本地代码做了修改,不执行commit操作,SVN服务器上是 不会有这个新版本的,也就是说其它人也得不到。对代码做过修改后,应尽快commit。使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择 “SVN Commit”项即可。

4、share Project(共享工程):ecplise中的操作

把一个非svn的工程,上传到svn中。

3.4. 使用客户端访问

测试导入文件:

搞定。

4. SVN协议

访问SVN资源库的协议通常有三种:

1、 http

a) 客户端和浏览器都可以访问。

2、 https

a) 客户端和浏览器都可以访问,同时比http更安全。

3、 svn

a) 只能通过客户端访问。

5. 资源仓库

SVN资源仓库中有三个非常重要的目录,trunk(主干)、branches(分支)、tags(标签),其作用是:

这三个目录,都是可以存放文件的,只是在功能方面有一些区别(只是约定):

trunk:一般的项目都是基于主干开发的。

branches:分支,一般用于有某些开发功能时,需要基于主干开分支,开发完成后要合并到主干。

tags:标签,项目开发完成后,发布上线时,需要将主干的代码打标签到tags中,一般情况下,tags的内容是只读的。

这三个目录在实际项目开发过程中的应用:

Release:发行版,稳定版。

RC:Release.Candidate发行候选版本。

6.  SVN项目实战

在企业开发过程中,更为常用的是通过Eclipse的插件来管理文件版本。

6.1. 在Eclipse中创建SVN连接

创建svn 的资源库连接。

6.2. 将项目发布到SVN的trunk

分别创建trunk、branches、tags:

与资源库进行同步(比较不同):

这么多内容都是应该提交到SVN的吗?

不是的,对于Maven项目而言,只提交srcpom.xml即可。

只需要项目相关的内容。

提交pom.xml

只去提交src里面的内容和pom.xml文件

每次执行与资源库同步时都会有以上内容,会影响每次提交的选择,所以可以选择将这些目录文件忽略掉。

6.3. 忽略指定的资源

6.3.1. 全局指定

6.3.2. 单个指定

删除忽略:

6.4. 提交代码

当我们在本地将代码修改后需要提交到SVN仓库,以便别人可以获取到最新的代码。

注意不建议直接提交因为该文件可能会被其他人修改从而造成冲突推荐在提交(更新)之前先执行与资源库同步

 

 

 

6.5. 更新代码

6.6. 冲突解决

 

6.7. 冲突解决(难点亦是重点)

什么是冲突?

冲突就是在同一个版本基础之上,多个人对该文件修改了修改,其中一个人将文件提交到SVN,这时,该文件已经是新的版本,但是,其他人的本地还是旧的版本,

这时,其他人并不知道该文件已经有了新的版本,执行提交操作,这时就产生了冲突。

解决冲突的核心思想:为了避免冲突,要在最新的版本之上修改(也就是说修改之前先更新),再提交。

如果我更新了之后,在编写代码的同时别人将该文件再次更新(我不可能时时刻刻都查看更新),这时直接提交会造成冲突,正确的做法是:提交之前将该文件先执行与资源库同步操作,先将冲突解决掉再提交代码。

接下来就需要讨论下个话题了,如何解决冲突?

首先要先明确,解决冲突是不能通过工具自动完成的,必须人工完成,当然了,可以借助工具辅助完成。

下面,演示冲突的解决过程:

6.7.1. 制造冲突

在Eclipse中将文件内容修改,用于模拟用户1修改文件:

然后,在桌面中的目录中修改该文件,用于模拟用户2修改文件:

这时,先将桌面中的文件提交:

提交成功。

在Eclipse中将项目与资源库同步:

6.7.2. 解决冲突(关键内容来了)

0、选择team 与资源库同步

1、 双击打开该文件,查看冲突的内容

2、 将远程更新的内容写到本地

3、 将该文件标记为合并(注意,一定是已经处理完冲突了才能标记,要不然会将服务端的文件覆盖掉)

4、 现在,就可以大胆的提交了

6.8. 冲突的另一种解决方案

有些时候可能会是这种情况:

服务端文件的内容被大量的修改,如果按照上面的方法一个个解决,非常的麻烦,这时你可以尝试以下的解决方案:

1、 备份本地的文件

2、 将该文件执行 还原 操作,并且再执行 更新 操作(也就说,放弃自己的修改,更新到最新的版本)

3、 将备份文件中修改的内容,拷贝(不是全部啊,只是自己修改的部分内容)回该文件,再执行提交就OK了。

总结:这种解决方案的核心思想是,放弃自己的修改,把本地文件更新到最新版本,在最新版本基础之上修改,并且提交。

6.9. 冲突解决

本地修改了代码,服务器做了更新,

7. 新检出的项目 ,转换成 maven 工程

8. svn的操作整理

冲突的解决:

建议,如果本地的代码出现了 * ,本地代码和服务器代码不一致。 不要去做更新的操作。

去做与资源库同步的操作。

可以确定冲突的文件。 解决冲突。

推荐:把自己的代码,进行本地备份,然后删除工作空间中的代码,进行还原,并且更新。

然后把本地本分的代码和工作空间的代码进行比对,合并

在做提交。

9. 打分支

 

SVN入门图解教程(超详细)的更多相关文章

  1. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

  2. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的 ...

  3. exe电子书制作教程(超详细)【申明:来源于网络】

    exe电子书制作教程(超详细)[申明:来源于网络] 地址:http://wenku.baidu.com/view/0b046907eff9aef8941e0631.html

  4. MyCat安装与测试教程 超详细!

    MyCat安装与测试教程 超详细! MyCat基础知识 一.什么是MYCAT? 1. 一个彻底开源的,面向企业应用开发的大数据库集群 2. 支持事务.ACID.可以替代MySQL的加强版数据库 3. ...

  5. Python入门教程 超详细1小时学会Python(转)

    假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows ...

  6. JDK的下载及安装教程图解(超详细哦~)

    一.本人电脑系统介绍及JDK下载途径 1.先说明一下我的电脑为win10系统,64位操作系统~ 2.我选择下载的JDK版本为1.8版本.给大家来两个下载渠道,方便大家的下载~ JDK官网:https: ...

  7. Python入门指南(超详细)

    Python 是一门非常容易上手的语言,通过查阅资料和教程,也许一晚上就能写出一个简单的爬虫.但 Python 也是一门很难精通的语言,因为简洁的语法背后隐藏了许多黑科技.本文主要针对的读者是: 毫无 ...

  8. windows环境下elasticsearch安装教程(超详细)

    一.安装jdk ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持.所以要先安装JAVA环境. 由于ElasticSearch 5.x 往后依赖于JDK 1.8的 ...

  9. Docker实例教程[超详细](一)

    Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互 ...

随机推荐

  1. Vue render: h => h(App) $mount

    $mount()手动挂载 当Vue实例没有el属性时,则该实例尚没有挂载到某个dom中: 假如需要延迟挂载,可以在之后手动调用vm.$mount()方法来挂载.例如: new Vue({ //el: ...

  2. 洛谷 P2873 [USACO07DEC]泥水坑Mud Puddles

    P2873 [USACO07DEC]泥水坑Mud Puddles 题目描述 Farmer John is leaving his house promptly at 6 AM for his dail ...

  3. 《鸟哥的Linux私房菜-基础学习篇(第三版)》(四)

    第3章 主机规划与磁盘分区        1. Linux与硬件的搭配        首先谈了认识计算机的硬件配置. 然后谈了选择与Linux搭配的主机配置. 在Linuxserver中,内存的重要性 ...

  4. Microsoft SQL Server Version List(SQL Server 版本)

    原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...

  5. what happens when changing the DOM via innerHTML

    what happens when changing the DOM via innerHTML

  6. JavaScript原型及原型链

    代码一: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  7. PythonNET网络编程4

    本地套接字 Linux 文件 b(块设备文件) c(字符设备文件) d(目录) -(普通文件) l(链接) s(套接字) p(管道) 作用:用于本地不同的程序间进行通信 创建流程 创建本地套接字 so ...

  8. 浩爷AC自己主动机高速学习方案

        今天弄完自己主动机之后.从那天比赛的阴影中爬出来了,猛地一看真不咋滴难,细致一看这尼玛还不如猛的一看. ..     必备算法:KMP,字典树(KMP我写了,字典树太简单,就是一个思想.我能够 ...

  9. JS实现按下按键触发点击事件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. AspJpeg2.0组件教程完整版 aspjpeg教程...

    AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,网络上对其进行详细和深入介绍的中文文章并不多,即使有一般也只是牵涉到图片缩略图和图片水印,这与其为英文版本有着密切的关系 ...