svn学习文档

一、简介

1、SVN是什么?

  • 代码版本管理工具
  • 记录每次修改
  • 查看所有的修改记录
  • 恢复到任何历史版本
  • 恢复已经删除的文件

2、SVN相比于Git有什么优势?

  • 使用简单,上手快
  • 目录级权限控制,企业安全必备
  • 子目录Checkout,减少不必要的文件检出

3、SVN主要用在哪里?

  • 开发人员用来做代码的版本管理
  • 用来存储一些重要的文件,比如合同
  • 公司内部文件共享,并且能按照目录划分权限

4、SVN仓库

推荐:https://svnbucket.com,也叫做SVN桶,这是现在最好用的SVN服务

二、安装

1、下载SVN相关安装文件

Windows:

TortoiseSVN

首先访问官网下载地址:
https://tortoisesvn.net/downloads.html,选择合适版本进行下载,如下:
在这里插入图片描述
由于该软件是英文,所以需要下载汉化包,在上述页面中往下滑动,滑动到Language packs,下载合适位数的汉化包,如下:
在这里插入图片描述

由于下载网速比较慢,我在这里给大家提供一个版本的安装包,如下:

TortoiseSVN-1.14.1 提取码:t5ao

对应版本汉化包 提取码:f7hw

MacOS:

Cornstone,我没用苹果系统,所以大家想用的可以搜索一下相关文档,该软件的官网是:https://cornerstone.assembla.com/

2、在Windows操作系统中安装TortoiseSVN和汉化包

1、双击TortoiseSVN安装包

在这里插入图片描述
2、点击两次Next,然后可以改变TortoiseSVN的安装地址
在这里插入图片描述
3、点击Next,再点击Install,估计屏幕上会弹出一个框,点击确认就可以了,出现安装成功界面,点击Finish
在这里插入图片描述
在这里插入图片描述
4、双击汉化包(例如:LanguagePack_1.14.1),然后点击下一步,点击确认,在点击下一步,之后在安装完成页面配置TortoiseSVN使用中文,再点击完成就可以了,如下:
在这里插入图片描述

5、检查是否安装成功,在桌面空白处单击鼠标右键,可以看到如下内容就说明安装成功了
在这里插入图片描述

三、使用

1、基本操作

准备工作

在测试之前,可以现在svnbucket上注册账号,然后创建一个新项目,创建时需要输入项目名称和项目简介等,暂时不用勾选“自动创建trunk、branches、tags目录结构”,毕竟我们以后也可以自己添加,操作如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后复制SVN版本库地址,如下:

在这里插入图片描述
现在我们在本机上创建一个文件夹来测试,假设叫做workspace(名称不限)

1)、检出 checkout

在上述文件夹workspace中的空白处点击右键,点击SVN检出,如下:

在这里插入图片描述
然后添加版本库URL和目录,如下:

在这里插入图片描述
之后需要输入用户名和密码,其中用户名和密码都是注册时候使用的用户名和密码,如下:
在这里插入图片描述
然后你就可以发现文件夹workspace中出现了svntest文件夹,如下:
在这里插入图片描述
如果你的svntest文件夹上面没有绿色对号,可以尝试重启电脑,然后就会出现绿色对号了

2)、新增 add

svntest文件夹中随便添加文件

3)、提交 commit

在空白处单击鼠标右键,选择SVN 提交,然后选择需要提交的文件/文件夹,填写提交信息,点击确定提交,当提交完成的时候点击确定就可以了,如下:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
然后你就可以看到所有的文件/文件夹上面都有绿色对勾了,如下:
在这里插入图片描述
之后我们也可以在svnbucket中的对应项目中看到上传的内容了
在这里插入图片描述

4)、更新 update

现在我们来更改计算机中的某文件,然后继续在空白处点击点击右键,然后选择SVN 提交,如果双击要提交的文件,可以看该文件修改了哪些位置,如下:
在这里插入图片描述
在这里插入图片描述
然后点击确认就可以把内容更新到远程仓库中了

5)、查看历史记录

svntest文件夹的空白处单击鼠标右键,选择TortoiseSVN,然后点击显示日志,之后可以选择对应版本的历史记录,查看该版本文件和之前一个版本的文件之间的区别,如下:
在这里插入图片描述
在这里插入图片描述

6)、SVN 更新

建议在每次提交之前进行SVN更新,即在svntest文件夹中空白处单击右键选择SVN更新,这样可以避免版本冲突,防止覆盖掉其他人的修改,操作如下:

在这里插入图片描述

2、撤销和恢复

1)、撤销本地修改(未提交到远程仓库)

如果在计算机本地修改了文件,但是不想提交该文件,那就需要用到本操作

方法1:

假设我修改了该文件,但是我发现修改的内容不对,我想把该文件恢复到原来的版本,那就需要在该文件上单击鼠标右键,选择TortoiseSVN,在选择SVN还原,如下:

在这里插入图片描述
我们可以双击被还原文件,查看里面的修改信息,如下:
在这里插入图片描述
在这里插入图片描述
如果真的需要还原,那就点击上一个图片中的确认就可以了

方法2:

在页面空白处单击鼠标右键,选择SVN提交,然后在文件上点击鼠标右键,选择SVN还原,之后在弹出的窗口中点击确认就可以了,如下:

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

2)、恢复到上个版本(已经提交到远程仓库)

如果本地修改的内容已经提交到了远程仓库,但是我认为我代码写错了,可以使用这种方式恢复计算机本地代码到上一版本
在这里插入图片描述
在当前最新版本上单击鼠标右键,然后选择复原此版本作出的修改,如下:
在这里插入图片描述
在这里插入图片描述
这种修改只是更改计算机本地代码到上一个版本,不过远程仓库中还是我们上次提交的错误版本,不过我们更改之后就可以再次提交到远程仓库

3)、恢复到指定版本

如果我们已经执行SVN 提交多次,但是发现我们这几次提交都是有问题的,所以我们想恢复到之前的版本,我们可以在svntest文件夹中空白处点击鼠标右键,选择TortoiseSVN,选择显示日志,然后在合适的版本上单击鼠标右键,选择复原到此版本,在弹出窗口中点击还原,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、添加忽略

比如有一个文件/文件夹,我不想对它进行版本控制,那就可以添加忽略,那么下次上传的时候就可以删除远程仓库中的该文件/文件夹

例如我不想对img文件夹进行版本控制,那么我可以在img文件夹上面单击鼠标右键,然后执行如下操作:
在这里插入图片描述

然后点击确认,如下:
在这里插入图片描述
如果现在你来执行SVN 提交操作,那么提交框如下:在这里插入图片描述

之后我们就可以发现远程仓库上就没有img文件夹了,如下:
在这里插入图片描述
如果我们想继续对img文件夹进行版本控制,可以将img文件夹从忽略列表中删除,首先在img文件夹上单击鼠标右键,具体操作如下:
在这里插入图片描述
在这里插入图片描述
然后可以再次执行SVN 提交,就可以将img文件夹中的内容提交到远程仓库

4、解决冲突

1)、什么情况容易发生冲突
  • 多个人修改了同个文件的同一行
  • 无法进行合并的二进制文件
2)、怎么避免冲突?
  • 经常update同步远程仓库的代码
  • 二进制文件不要多个人同时操作
3)、解决文本文件的冲突

比如其他同事更改了某文件中的代码(可以使用同一个电脑模拟,再次检出到其他目录就可以了),然后他将该代码提交到了远程仓库,现在我也更改了该项目中该文件的同行代码,然后我先在空白处点击鼠标右键,选择SVN 更新,之后出现如下结果:
在这里插入图片描述
然后在冲突提示信息上单击鼠标右键,如下:
在这里插入图片描述
现在文件夹中冲突文件的位置会生成多个文件,比如:
在这里插入图片描述

如果我们确信我们的才是最正确的,那就点击使用"我的"解决有冲突的文件;如果我们确信远程仓库中的才是正确的,那就点击使用"他们的"解决有冲突的文件;如果我们无法确定谁的才是正确的,我们可以点击编辑冲突,现在我们来演示点击编辑冲突的做法,如下:
在这里插入图片描述
其中绿色=号右边的代码是前一个版本中的代码,作用是告诉我们前一个版本是怎么写的,不属于问题代码。如果经过判断发现我的才是正确的,那就可以在本地文件中的红色冲突代码上单击鼠标右键,选择使用此文本块,如下:
在这里插入图片描述
然后已合并的文件中就可以看到里面的代码变成了我写的代码,如下:
在这里插入图片描述
之后就可以点击标记为已解决按钮,如下:
在这里插入图片描述
然后编辑页面就可以关闭了,现在你再去看文件夹中的文件,那就无法找到那几个其他版本的文件了,如下:
在这里插入图片描述
然后我们就可以进行SVN 提交

4)、解决二进制文件的冲突(例如:图片)

如果同事更换了某个已经存在的图片,然后他把更改操作提交到远程仓库中了,之后我在本地也更换了这个已经存在的同名图片,然后我在svntest文件夹空白处单击鼠标右键,选择SVN 更新,之后就会出现冲突问题,如下:
在这里插入图片描述
在这里插入图片描述
之后我们来看文件夹中冲突信息,如下:
在这里插入图片描述
依然是在冲突上单击鼠标右键,如下:
在这里插入图片描述
假设依然选择编辑冲突,然后寻找我们认为正确的图片,其中的选择没什么作用,我们记下我们到底认为是本地的正确还是远程的正确,然后在点击使用"我的"解决有冲突的文件或者使用"他们的"解决有冲突的文件,如下:
在这里插入图片描述
假设选择使用"他们的"解决有冲突的文件,然后在弹窗中点击确认就可以了,如下,在这里插入图片描述
这就解决了冲突

5、分支

1)、什么时候需要开分支?
  • 隔离线上版本和开发版本
  • 大功能开发,不想影响到其他人,自己独立开个分支去开发
2)、SVN经典目录结构
  • trunk:主干;用来存放开发中的文件,平时都在主干上进行开发,如果到一个版本,那就可以开一个分支branches
  • branches:分支;一般对应线上版本
  • tags:标签;

创建分支前的准备工作:

还记得我们在SVNBucket上创建项目吗,在创建的时候就可以勾选自动创建……目录结构,现在假设我们忘掉上面的那些项目,假设我们新创建了一个项目也叫做svntest,如下:
在这里插入图片描述
在这里插入图片描述
现在我们来复制trunk的地址,如下:
在这里插入图片描述
之后在计算机中的workspace文件夹空白处单击鼠标右键,选择SVN检出,如下:
在这里插入图片描述
自己给主版本起个名字,这个名字可以不是固定的,但是里面的内容确实是远程仓库主版本trunk文件夹中的内容,如下:
在这里插入图片描述
生成内容如下:
在这里插入图片描述
然后可以将需要的内容加入到svntest-trunk文件夹中,然后SVN 提交到远程仓库中,这个操作就不在演示了

3)、在远程仓库中创建分支

在svntest-trunk文件夹上点击鼠标右键,然后依次选择,如下:
在这里插入图片描述
现在来在远程仓库中正式创建分支,如下:
在这里插入图片描述

4)、将远程仓库中的分支检出到本地

首先进入SVNBucket,然后复制分支地址,如下:
在这里插入图片描述
之后在本地workspace文件夹中空白处单击鼠标右键,选择SVN 检出,一般会自动填充复制的svn地址,然后我们需要添加分支在本地的名称,如下:
在这里插入图片描述

5)、切换分支

按照上述创建分支的方式先创建一个新分支(比如名称是online2.0),然后选中svntest-online文件夹,然后在该文件夹右键,按照下图进行切换:
在这里插入图片描述
然后开始切换分支,如下:
在这里插入图片描述

6)、查看当前分支

首先选中该本地分支文件夹,然后在本地分支文件夹上单击鼠标右键,选择属性,然后选择Subversion,之后就可以看到当前分支是谁了,如下:
在这里插入图片描述
在这里插入图片描述

7)、合并分支到其他分支

假设我在分支上添加了一个文件并提交到了远程仓库,然后我想把这个文件合并到主干(也可以是其他分支)上,可以首先选中该分支文件夹,然后在该分支文件夹上单击鼠标右键,依次选择至显示日志,如下:
在这里插入图片描述
按照要求进行合并版本到,如下:
在这里插入图片描述
选择本地的合适分支,可以是主干或者其他分支都是可以的(一般都是主干),如下:
在这里插入图片描述
之后合并的效果如下:
在这里插入图片描述
但是这个文件只是在本地,还没有到远程仓库中的trunk目录中,然后我们就可以执行SVN 提交操作了

8)、删除分支

在任何一个本地分支内部空白处单击右键,依次选择至版本库浏览器,如下:
在这里插入图片描述
删除特定分支,该删除操作将会删除远程仓库中的分支,操作如下:
在这里插入图片描述

6、代码暂存

1)、有什么作用?
  • 代码改变了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。
  • 代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。
2)、贮藏 / 检查点

假设我正在做一个功能,但还没有做完,现在线上出现一个紧急bug,那我们需要把当前所做的代码暂存起来,等会再来操作,具体做法是在空白处单击鼠标右键,依次找到贮藏,如下:
在这里插入图片描述
在这里插入图片描述
如果点击贮藏按钮,上面已经解释的很清楚了;如果点击检查点按钮,那么将保存当前的工作状态,但是不会将计算机当前文件中的内容更新为远程仓库中的内容

当我们点击贮藏按钮之后,我们那会更改的内容就消失了,现在计算机中当前主干/分支中的内容和远程仓库中的内容一致,如下:
在这里插入图片描述
现在我们来处理bug,然后进行SVN 提交,如下:
在这里插入图片描述

3)、取消贮藏

在计算机本地主干/分支文件夹中空白处单击鼠标右键,依次选择取消贮藏,如下:在这里插入图片描述

在这里插入图片描述

当操作完成之后,你会发现本地文件又变成了我们没有贮藏之前的样子,并且我们处理bug的操作不会消失,如下:
在这里插入图片描述
现在我们来继续之前没有完成的工作,当工作完成先执行SVN 更新,在执行SVN 提交

7、复杂代码合并

1)、使用情况
  • 主干开发新功能,改变了很多内容
  • 分支是线上版本,修复了很多bug
  • 两个分支时间久了差异很大,无法直接进行分支合并或者指定提交记录合并代码
2)、Beyond Compare下载

官方下载地址:https://www.beyondcomparepro.com/download,注意:官网下载很慢

Beyond Compare 4百度网盘链接(从官网下载):https://pan.baidu.com/s/1yXbHlINjuZSuP82YKg5_aA 提取码:zwkq

3)、具体使用

打开首页面如下:
在这里插入图片描述
执行操作开始比较内容,如下:
在这里插入图片描述
在这里插入图片描述
之后我们可以选择差别比较方式,然后两个文件夹中间的红色≠代表里面的内容不等,紫色文件代表该文件是该文件夹下面独有的,如下:
在这里插入图片描述
如果想把该文件夹中独有的文件复制到另外一个文件夹中,可以在该文件上面单击鼠标右键,选择复制到左边,如下:
在这里插入图片描述
在这里插入图片描述
对于那些中间是红色≠的文件,说明两个文件夹中的该同名文件里面的内容不同,那么我们需要双击某个同名文件,然后仔细看看到底哪个地方不同,如下:
在这里插入图片描述
在这里插入图片描述
如果修改完毕了,那就可以使用Ctrl+S保存,然后Ctrl+W退出就可以了

如果全部修改完毕,那就可以使用SVN 提交更新远程仓库了

四、其他文档

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值