前言

正式进入公司后并不会像我们自学时自己一个人随心所欲地写代码,需要我们和同事进行协同开发,此时代码管理工具是必不可少的,目前常用的两款工具是:SVN 和 Git,今天我们就来学习一下SVN的使用!

1 SVN简介

SVN是什么

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

SVN相比于Git的优势

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

主要应用场景

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

2 SVN仓库

仓库推荐使用:SVN桶

2.1 SVNBucket服务端

目前最好用的SVN服务,下载地址如下:https://svnbucket.com

2.2 VisualSVN服务端

下载地址如下: http://subversion.apache.org/packages.html

点开上面的VisualSVN连接,下载VisualSVN server,下载完成后双击安装,如下图:

  • Location:指VisualSVN Server的安装目录。
  • Repositorys:指定你的版本库目录。
  • Server Port:指定一个端口(不要与其它应程端口重复)。
  • Use secure connection勾山表示使用安全连接。

点击【Finish】即可完成安装。安装完成后,启动VisualSVN Server Manager,如图:

可以在窗口的右边看到版本库的一些信息,比如状态、日志、用户认证、版本库等。

建立版本库,需要右键单击左边窗口的Repositores,如下图:

在弹出的右键菜单中选择Create New Repository或者新建 -> Repository:

点击【Finish】即可完成基本创建.

3 SVN客户端

客户端推荐使用:TortoiseSVN,安装方式如下:

  1. 点击下载SVN客户端

  1. 点击官网下载

  1. 点击按钮,就自动进行下载了

  1. 下载完成后,进行安装,无脑下一步就安装成功了(可以选择安装路径)

点击Finish安装完成。

4 SVN基本命令

Checkout:把SVN仓库的代码下载到本地,比如你现在参与一个团队的项目,在你参与之前项目可能已经在运行或者技术主管也已经搭建好代码仓库,你可以通过checkout命令项目代码,获取相应的项目的代码。

Update:在你编写代码的过程中,项目参考者很可能已经提交过代码到SVN服务器,而你本地项目都是自己编写,肯定没有其他参与者新提交的代码,你可以通过update SVN获得SVN最新的代码。

Commit:当你完成一部分开发后并且程序中没有其它的错误,你可以通过commit提交代码到SVN服务器,服务器会产生一个新的版本,这样其它参与者就可以获取到您相应提交的代码。重要提示:每次必须先先update再Commit。

5 SVN基础操作

首先我们需要创建一个SVN项目:

然后我们在桌面上创建文件夹:workspace

进入到workspace文件夹中,鼠标单击右键,单击SVN Checkout…

创建一个需要检出的文件夹:

接着,填写刚刚注册时候的用户名和密码:

此时,svnbucket文件夹中的文件(代码)都可以提交到服务端

我们在该文件夹中添加两个txt文件,鼠标右键,单击SVN Commit…进行提交

提交之后就可以到SVN仓库中查看提交的内容了:

提交操作演示完毕后,也可以对提交的文件内容进行修改,首先我将xzb.txt文件中的内容进行修改,此时文件就会变红:

然后在文件所在页面鼠标右键,单击SVN Commit…(提交之前单击SVN Update先进行更新,这样可以避免冲突)

此时我们去SVN仓库查看cs.txt文件,发现内容修改成功!

6 撤销和恢复

撤销操作第一种情况:首先我们将cs01.txt内容进行修改,文件就变成红色的,此时如果我们想撤销刚刚的修改操作,可以直接在修改的文件上鼠标右键,单击 TortoiseSVN——>Revert… 就可以撤销了!

撤销操作第二种情况:我们将错误的内容提交到仓库中了,此时我们想要撤销,需要先打开日志信息:鼠标右键——>TortoiseSVN——>Show Log

此时这次撤销操作只是在本地撤销,还需要提交到服务端,这样才算真正撤销成功了!

撤销操作第三种情况:我们还可以将提交的错误代码撤销到指定的版本,比如我们想从版本6撤销到版本4,就可以选中版本4,鼠标右键,单击Revert to this revision就本地撤销了,最后需要再次提交才能成功。

7 添加忽略

有些时候,我们不是所有文件都想要进行提交,此时我们就可以对不想提交的文件添加忽略,我们接下来对cs01.txt文件添加忽略。首先需要选中文件,鼠标右键,点击TortoiseSVN——>Unversion and add to ignore list——>cs01.txt,此时cs01.txt文件上多了个❌标志,说明该文件被忽略了。然后我们进行提交就发现SVN仓库中没有cs01.txt文件了:

上述添加忽略的方式同时也是删除忽略的方式,如果想要将忽略属性删除那就再次执行上述操作!

8 解决冲突

什么情况容易发生冲突?

多人修改同一文件同一行

无法进行合并的二进制文件

怎么避免冲突?

经常update同步他人的代码

二进制文件不要多个人同时操作

如何解决冲突?(由于该过程需要两台电脑,且很难文字记录,所以提供视频链接)

https://www.bilibili.com/video/BV1k4411m7mP?p=5&spm_id_from=pageDriver

9 分支

什么时候需要开分支

  • 隔离线上版本和开发版本
  • 大功能开发,不想影响别人,自己独立开个分支进行开发

SVN经典目录结构

  • trunk:主干
  • branches:分支
  • tags:标签

首先我们在文件夹中创建上述经典目录结构(3个文件夹),将代码文件放到trunk文件夹中,加入我们的主干开发已经完成,准备上线了,我们就可以开个线上版本分支。选中trunk文件夹,鼠标右键,单击TortoiseSVN——>Branch/tag,然后按照下图操作就创建好分支了:

此时我们更新一下,就会发现branches中出现了分支,接着我们把onlinev1.0和trunk文件重新检出到workspace文件夹中,鼠标右键查看属性就能得到这两个文件的URL:

然后根据URL 检出SVN Checkout… 到workspace文件夹下,将svnbucket文件夹删除后,我们只有一个主干和一个分支:

此时主干和分支的修改操作,相互之间并没有影响!

在这里我们的svnbucket-onlinev1.0是线上版本,线上版本出现bug我们就对其进行修改提交,这样对主干没有任何影响。

如果我们想把线上的bug修复操作合并到主干上,就需要将鼠标移动到线上版本,鼠标右键——>TortoiseSVN——>Show log,选中刚刚修改的版本:

将此版本合并到svnbucket-trunk,这样就合并完成了!

接下来我们再创建一个onlinev2.0分支文件,演示一下如何切换分支,选中svnbucket-trunk文件,此时另一个分支创建完成了,接下来我们从1.0分支切换到2.0分支:

10 代码暂存

需要使用代码暂存的场景:

  • 代码修改了很多,突然需要紧急修复一个bug,但是代码并没有写完,不能提交
  • 代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交

接下来我将文件内容进行修改,然后将文件暂存起来:

取消暂存的方式也很简单:

【图文详解】入职必备—3分钟学会SVN快速上手相关推荐

  1. 入职必备两小时入门SVN(二)

    入职必备两小时入门SVN(二) 1.SVN使用 1.创建版本库 打开SVN服务端(开始菜单) 右击Repository.点击Create Repository,出现下面画面,选择默认就好 2.导入项目 ...

  2. 入职必备两小时入门SVN(一)

    入职必备两小时入门SVN(一) 1.简介 SVN的全称是Subversion,即版本控制系统.它是最流行的一个开放源代码的版本控制系统.作为一个开源的版本控制系统,Subversion管理着随时间改变 ...

  3. 计算机网络管理的常用命令,网络管理常用命令图文详解.pdf

    网络工程师必备 – 网络管理常用命令图文详解 网络工程师必备 网络管理常用命令 图文详解 V1.0 V1.0 包含 ping.ipconfig.netstat.nbtstat.tracert. pat ...

  4. 使用阿里云服务器三分钟搭建网站教程(详细图文详解)

    使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择.Web环境.域名解 ...

  5. python爬虫图片实例-【图文详解】python爬虫实战——5分钟做个图片自动下载器...

    我想要(下)的,我现在就要 python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk ...

  6. 分区助手里如何从临近盘(如D盘)抽取一定的空间给已经快满了的盘(如E盘)(博主推荐)(图文详解)...

    不多说,直接上干货! 分区助手是什么?(博主推荐)(图文详解) 分区助手各版本比较(图文详解) 分区助手官网使用教程(专业版.绿色版和WinPE版)(图文详解) 安装分区助手时出现"分区助手 ...

  7. SSL之CA证书颁发机构安装图文详解

    上一节我们说到,在验证公钥安全性时,是在CA机构颁发的包含用户的公钥及其身份信息的数字证书,数字证书由权威机构--CA签发.这个CA权威机构可以是自己的服务器也可以是国际公认的CA权威机构.下面我就来 ...

  8. Docker持续部署图文详解

    2019独角兽企业重金招聘Python工程师标准>>> Docker持续部署图文详解 博客分类: docker 架构 JAVA项目如何通过Docker实现持续部署(只需简单四步),即 ...

  9. Cocos2d-x win7 + vs2010 配置图文详解(亲测)

    Cocos2d-x win7 + vs2010 配置图文详解(亲测) 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为coc ...

最新文章

  1. 在WEBSERVICE学习中遇到的问题
  2. 奖牌分配/Median Pyramid Hard
  3. android动态刷新主页,Android app 页面加载统计工具
  4. 【mongodb环境】在ubuntu上搭建mongodb,并且开启远程连接
  5. mobomarket android,MoboMarket
  6. html网页显示时中文乱码
  7. 手把手写一个vue3的组件
  8. php微信显示通讯录,微信小程序通讯录功能实现思路分享
  9. 10分钟看懂财务报表分析,只需掌握一个公式!
  10. 使用java自带的方式调用打印机打印图片
  11. 一副眼镜一千多贵吗_眼镜片的价格差距为什么那么大
  12. 超越OCR的富文档内容解析神器LayoutParser
  13. 第四周 放大电路的分析
  14. python :脚本运行出现语法错误:IndentationError:unexpected indent(缩进问题)
  15. MySQL - 用户管理
  16. js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers
  17. 钉短信、钉电话收费套餐
  18. ECl@SS学习笔记(1)
  19. Nginx代理websocket
  20. 给女盆友微信定时消息推送,给她一个大大的情惊喜!!!

热门文章

  1. 放假倒计时弹幕单页网站源码
  2. 小白鼠与毒药解题过程分析
  3. 高斯-赛德尔迭代(Gauss–Seidel method)c语言实现
  4. Longest Substring with Same Letters after Replacement (hard)
  5. 【Luogu】P2465山贼集团(树形状压DP)
  6. doceker 安装MySQL
  7. 消息中心构架设计说明书
  8. Docker 的 镜像的常用命令
  9. 2021最新 阿里云ECS搭建我的世界服务器
  10. 笔记分享 | 免疫组化染色Protocol