SVN基本使用笔记——广州云科

简介

SVN是什么?

代码版本管理工具

它能记住你每次的修改

查看所有的修改记录

恢复到任何历史版本

恢复己经删除的文件

SVN跟Git比,有什么优势

使用简单,上手快

目录级权限控制,企业安全必备

子目录Checkout,减少不必要的文件检出

主要应用:

开发人员用来做代码的版本管理

用来存储一些重要的文件,比如合同

公司内部文件共享,并且能按目录划分权限

SVN仓库

推荐: svnbucket.com,sVN桶

现在最好用的SVN服务

安装sVN客户端

TortoisesvN windows推荐

cornstone mac推荐

svnbucket.com(sVN桶)官网如下:也有使用教程

svn使用教程 · SVN使用教程

下载安装svn客户端

可参考:svn客户端下载 · SVN使用教程

从而下载win的64位的TortoiseSVN客户端

官网下载太慢,也可找别的渠道下载,如【TortoiseSVN下载 中文版】TortoiseSVN 1.14.5-ZOL软件下载

下载后,点击安装直接next。

下载汉化包:还是找到上面官网svn客户端下载 · SVN使用教程

下载后运行安装,安装最后一步勾选配置TortoisesvN使用这个语言。即可。

sVN基本操作:

检出checkout

新增add

提交commit

更新update

历史记录

SVN基本操作

1、进入官网,注册登录后,项目列表点击加号创建一个项目,输入名称和描述,可先不勾选那个创建三个目录的按钮。

SVNBucket - SVN仓库,免费 SVN 代码托管服务器,不限私有,不限成员

2、点击这个项目,点击复制SVN地址如svn://svn.svnbucket.com/svn_3284514536/svnbucket/

3、桌面上创建一个目录,如workspace,点进去,点击右键,然后点击svn检出,再给他加一层目录后点击确定,输入svn的用户名和密码即可。

4、进入该目录C:\Users\kongdeyi\Desktop\workspace\svnbucket后,发现一个.svn文件夹,我们在这个C:\Users\kongdeyi\Desktop\workspace\svnbucket目录下从别的地方copy几个文件放进去。右键svn提交,然后第一个框中输入描述,第二个框中选择要提交的内容,也可点击全选全部选中,然后确定即可。

5、然后再是svnbucket网站中可看到提交的内容和记录等

6、我们修改一下pojo中的User实体类中的内容,然后再次在.svn文件夹所在的目录点右键svn提交,提交前可双击查看文件变更的内容差异:

确定没问题后,确定提交即可。

7、svnbucket网站上该文件查看发现是经过修改后的内容。

8、查看日志:在该C:\Users\kongdeyi\Desktop\workspace\svnbucket\文件夹或子文件夹中右键tortoiseSVN选择显示日志即可查看之前提交的内容。

在svn提交之前先右键的svn更新是一个比较好的习惯,可避免覆盖原文件。

撤销和回复

撤销和恢复:

撤销本地修改

撤销已提交内容

恢复到指定版不

第一种情况:比如我们修改了pojo下的User类将类名改成User666,只是在本地还未提交,我们想到这个是个错误的修改,我们可右键tortoiseSVN中选择还原,也可在svn提交的时候,检查一下修改的内容后,提交窗口中右击该文件选择svn还原。

第二种情况,当我们将修改成错误的内容文件提交上去了,提交完后发现该pojo下的user类刚刚修改成user666是有问题的。

可先在右键tortoiseSVN中日志中看到这次提交的文件,点开发现和之前修改的区别确实是改错了。我们可在下图位置右键,选择复原此版本做出的修改

然后现在只是本地恢复正常了,但我们还需要提交到仓库,右键svn提交即可

第三种情况 是我们想恢复到一个比较早的版本,恢复到指定版本

右键tortoiseSVN中日志中,想要复原到的版本,右键复原到此版本

现在还是只是本地修改了,我们还需要svn提交。

添加忽略

忽略不想提交的文件:

C:\Users\kongdeyi\Desktop\workspace\svnbucket文件夹下的pojo我们不想pojo文件夹提交了,我们可右击这个pojo文件夹,tortoiseSVN->去除版本控制并增加到忽略列表,选择pojo即可。

然后,先svn更新后svn提交,就会将这些删除pojo目录的本地提交到远程仓库。

也可在svn提交的时候,在第二个框中,对某个文件或文件夹右键,选择增加到忽略列表也可。

又不想忽略这个pojo文件夹或其他已经被忽略的文件呢?

右击这个被忽略的文件或文件夹,tortoiseSVN选择加入,或选择从忽略列表中删除。然后svn提交即可。

解决冲突

什么情况容易发生冲突?

1多个人修改了同个文件的同一行

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

怎么避免冲突?

经常update同步下他人的代码

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

冲突了怎么办?

解决冲突很简单,不用怕
版本冲突原因:

假设A、B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns.txt文件的版本号已经变成101了。同时B用户在版本号为100的kingtuns.txt文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的101版本上作的修改,所以导致提交失败。

别人修改了pojo下的User中类名改为User666并提交了,本机电脑没有update这个最新版本的,在上一个版本中也修改了User类的类名这一行的代码为public interface,然后svn更新,或只选中这个User类进行svn更新这一个文件,就会报冲突,会生成几个这个User文件,mine是本地的,r7和r9是版本7或9的,参考下图:

解决方法:

然后右击爆红的地方,可使用他的,丢弃我的,也可丢弃我的,使用它的。也可编辑冲突:

编辑冲突,可以在他的或我的冲突的这行右击这一行,使用某个正确的文本块,如下:

确定后,更新成功,本地恢复正常了,解决冲突了。

对于修改二进制文件,比如图片,用别的地方某个同名图片覆盖掉svn项目中的某个图片。然后svn更新,就会产生冲突。右击爆红的冲突这行,可选择使用他们的还是使用我的,或选择编辑冲突,选择要本地现在的副本的,还是上一个版本的,还是远程的。

分支

什么时候需要开分支?

隔离线上版本和开发版本

大功能开发,不想影响到其他人,自己独立开个分支去开发

sVN经典目录结构:

trunk 主干,开发中的文件 ,平时在主干上开发,开发后用那个版本可开一个分支存储到branch中。

branches 分支

tags 标签

1、可在vnbucket中创建项目的时候勾选那个创建分支接口的选框。

2、自己创建:

先创建这三个文件夹,然后将之前该svnbucket文件夹中的工作文件放到trunk目录中,svn提交,选择全部文件提交即可。

开发就在主干上开发,开发完成要上线了,就可开一个分支。

1、右击trunk文件夹,ortoiseSVN选择分支/标记,选择至路径branches,加个onlinev1.0

填写信息,选择版本库中的最新版本

点击确定即可

2、更新一下C:\Users\kongdeyi\Desktop\workspace\svnbucket svn更新,然后branches目录下就会有onlinev1.0文件夹,里面就有trunck分支下的所有内容复制了一份。

这样会有个问题,以后分支越来越多,要更新的内容也会越来越多,我们可将分支单独checkout一份出来:

右击这个文件夹,选择属性

选择subVersion,复制全部的url:

回到workspace,在这个目录右击,选择svn检出,也可改个名字,确认即可:

然后同理,sgvnbucket目录下的trunk目录也可属性复制url,在workspack目录下检出一份。这样svnbucket目录就可删除了,结果如下

这样在主干修改的内容提交不会影响分支,分支修改提交也不会影响主干。

合并分支

分支上修改的内容怎么同步到主干上呢,如分支上修改bug,要同步到主干上:

workspace目录下右击这个svnbucket-onlinev1.0文件夹,ortoiseSVN选择显示日志。选中某个版本,合并版本到:

合并版本到,选择主干的文件夹:

本地主干目录合并好了,我们在主干目录svn提交到远程仓库

分支切换

再开一个分支:

右击workspace目录下的svnbucket-trunk目录,选择tortoisesvn,选择分支/标记,选择branches分支,起个名onlinev2.0,确认即可。

右击这个svnbucket-onlinev1.0, tortiosesvn,选择切换:

可下拉切换,或点右侧选择路径切换

确定后,右击这个svnbucket-onlinev1.0属性,就看到切换成2.0了

当然,我们可以给这个文件夹改个名字:

也可点进C:\Users\kongdeyi\Desktop\workspace\svnbucket-online,右击后 tortiosesvn点击版本库浏览器,查看结构

代码暂存

有什么用?

1.代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交。

2.代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。

C:\Users\kongdeyi\Desktop\workspace\svnbucket-trunk\pojo中的User类,我们修改了一些代码,带还没改完,不应该提交。我们右击后Tortoise中选择汉化翻译的贮藏

上面两个按钮,一个不保留修改,一个保留修改。

取出暂存,我们右击后Tortoise中选择汉化翻译的取消贮藏,选择暂存的文件来取出暂存

复杂代码合并

上面分支部分学了在日志中选择某个版本合并到另外一个分支上去。

情况:

主千开发新功能,改了很多

分支是线上版本,修复了很多bug

两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码

使用BeyondCompare

下载:下载 | Beyond Compare 中文官方网站

安装后使用

选择文件比较,选择将路径分别粘贴到左右:

选中右键比较内容,直接点开始,

上方选择差别菜单,也可选择全部。

点开这个User.java文件:

点左边这个,将右边替换,点击右边这个将左边替换。然后修改完后,再ctrl+s可保存。

然后就可按需合并修改了。然后再把代码提交上即可。

相关推荐
不会调制解调的猫18 分钟前
笔记 | 内网服务器通过wifi穿透,设置流量走向
运维·服务器·笔记
程序员大雄学编程1 小时前
「机器学习笔记7」决策树学习:从理论到实践的全面解析(上)
笔记·决策树·机器学习
聪明的笨猪猪2 小时前
Java Spring “Bean” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
bnsarocket3 小时前
Verilog和FPGA的自学笔记3——仿真文件Testbench的编写
笔记·fpga开发·verilog·自学
丰锋ff4 小时前
2025 年真题配套词汇单词笔记(考研真相)
笔记·考研
小熊猫程序猿6 小时前
Datawhale 算法笔记 AI硬件与机器人大模型 (五) Isaac Sim 入门
人工智能·笔记·机器人
不太可爱的叶某人9 小时前
【学习笔记】kafka权威指南——第10章 监控kafka (7-10章只做了解)
笔记·学习·kafka
张人玉10 小时前
C# TCP 客户端开发笔记(TcpClient)
笔记·tcp/ip·c#
不太可爱的叶某人13 小时前
【学习笔记】kafka权威指南——第6章 可靠的数据传递
笔记·学习·kafka
研猛男15 小时前
0、FreeRTOS编码和命名规则
笔记·stm32·freertos