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可保存。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/121373.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Dbeaver连接GaussDB

1.下载DBeaver,官网地址 2.安装软件,打开软件,点击数据库->驱动管理器,具体操作如下图: 3、选择新建后进行参数设置,如下图: 具体参数如下图 驱动名称: GS #随便定义 驱动类型&#…

冠达管理:上市破发是什么意思?

随着股票商场的开展,一些公司开端考虑走向上市,以取得更多的资金和更高的知名度。然而,上市并不总是一件功德。当一家公司的股票开端买卖时,如果它的股价远低于发行价,就可以说它遭遇了“破发”。这是一种负面事件&…

vue3 判断包含某个字符

<img v-if"node.level 1 && checkIfIncludeSubStr(node.label, 人口)"src"/assets/images/icon-convention-01.png" width"16"class"inlineBlock Vmiddle" style"margin-right: 8px;"/>const data reactive…

【校招VIP】前端专业课考点之CSMA/CD协议

考点介绍&#xff1a; CSMA/CD&#xff0c;载波监听多点接入/碰撞检测&#xff0c;是广播型信道中采用一种随机访问技术的竞争型访问方法&#xff0c;具有多目标地址的特点。它通过边发送数据边监听线路的方法来尽可能减少数据碰撞与冲突。采用分布式控制方法&#xff0c;所有结…

哈夫曼编码实现文件的压缩和解压

程序示例精选 哈夫曼编码实现文件的压缩和解压 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《哈夫曼编码实现文件的压缩和解压》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0…

Nomad 系列-安装

系列文章 Nomad 系列文章 Nomad 简介 开新坑&#xff01;近期算是把自己的家庭实验室环境初步搞好了&#xff0c;终于可以开始进入正题研究了。 首先开始的是 HashiCorp Nomad 系列&#xff0c;欢迎阅读。 关于 Nomad 的简介&#xff0c;之前在 大规模 IoT 边缘容器集群管…

Linux的命令

Linux的命令分为四个类型&#xff1a;文件操作命令、系统操作命令、文本处理命令和网络操作命令。下面简单介绍一下常用的Linux命令&#xff1a; 文件操作命令 ls&#xff1a;列出目录下的所有文件和目录。 cd&#xff1a;切换当前目录。 mkdir&#xff1a;创建一个新目录。…

Git小白入门——上手实操之创建仓库和代码提交

版本库 什么是版本库呢&#xff1f;版本库又名仓库&#xff0c;英文名repository&#xff0c;简单理解成一个目录&#xff0c;目录里的所有文件都可以被Git管理&#xff0c;每个文件的修改、删除&#xff0c;Git都能跟踪&#xff0c;以便任何时刻都可以追踪历史&#xff0c;或…

arcpy实现kml批量转出为shp 包括shp合并

# -*- coding: utf-8 -*- import sys sys.path.append("D:\\Python27\\ArcGIS10.4\\python") sys.path.append("D:\\Program Files (x86)\\ArcGIS\\Desktop10.4\\arcpy\\arcpy") import arcpy, os# Set workspace (where all the KMLs are) 放kml文件的文件…

docker安装redis实操记录

1.Docker拉取镜像 docker pull redis2.Docker挂载配置文件 创建挂载文件夹 mkdir -p /home/redis/data下载默认配置文件 redis.conf 3.启动redis 容器 docker run --restartalways --log-opt max-size100m --log-opt max-file2 -p 6379:6379 --name redis -v /home/redi…

Qt鼠标点击事件处理:按Escape键退出程序

创建项目 Qt 入门实战教程&#xff08;目录&#xff09; 首先&#xff0c;创建一个名称为QtKeyEscape的Qt默认的窗口程序。 参考 &#xff1a;Qt Creator 创建 Qt 默认窗口程序 Qt响应键盘Escape事件 打开Qt Creator >>编辑 >> 项目 >> Headers>> …

Java版企业工程项目管理系统源码+java版本+项目模块功能清单+spring cloud +spring boot

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

Java“牵手”京东商品价格数据,京东商品历史价格数据接口,京东API接口申请指南

京东平台商品历史价格接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片&#xff0c;历史价格&#xff0c;现在的价格等详细信息 。 获取商品价格接口API是一种用于获…

How to clean up Graylog Default index set log

一、前言: Graylog 满了,没有自动清理 挤爆硬盘空间,手动清理流程: 二、问题描述: Elasticsearch nodes disk usage above high watermark (triggered a few seconds ago)mree are ast search modes i the use wtm a mos mo re disk ther dsk s saoe me e waemak f ths…

Kubernetes单主集群的部署(一)

目录 一、k8s单主架构集群的部署 1.操作系统初始化配置 2.部署 etcd 集群 3.部署docker引擎 4.部署 Master 组件 5.部署 Worker Node 组件 6.部署 CNI 网络组件&#xff08;使用 flannel&#xff09; 一、k8s单主架构集群的部署 k8s集群master01&#xff1a;192.168.1…

如何让insert程序速度快,可以试试联合SQL(insert 和 select 一起使用)?

查询添加可选择SQL执行&#xff0c;速度远超程序执行 insert 和 select案例 insert into 表1(列1,列2,列3,...) select 列1,列2,列3,...from表2(GROUP BY 列)116511 条数据 耗时45秒&#xff0c; 如果是程序查询然后再insert&#xff0c;则需要30分钟左右&#xff01;&#x…

k8s部署redis 3主3从

k8s部署redis6节点&#xff0c;组成3主3从集群模式 一般来说&#xff0c;redis部署有三种模式。 单实例模式&#xff0c;一般用于测试环境。 哨兵模式 集群模式后两者用于生产部署 哨兵模式 在redis3.0以前&#xff0c;要实现集群一般是借助哨兵sentinel工具来监控master节点…

亚马逊店铺如何快速出单?

对于一个新开的亚马逊店铺而言&#xff0c;首先要做的就是想办法让自己的店铺快速出单&#xff0c;只有有订单了&#xff0c;才能够稳住局势&#xff0c;才能够让自己亚马逊店铺在市场上有立足的资本。 不过对于一个亚马逊店铺而言&#xff0c;要想做到快速出单是很难的&#…

(数学) 剑指 Offer 62. 圆圈中最后剩下的数字 ——【Leetcode每日一题】

❓ 剑指 Offer 62. 圆圈中最后剩下的数字 难度&#xff1a;简单 0, 1, ,n-1 这 n 个数字排成一个圆圈&#xff0c;从数字 0 开始&#xff0c;每次从这个圆圈里删除第 m 个数字&#xff08;删除后从下一个数字开始计数&#xff09;。求出这个圆圈里剩下的最后一个数字。 例如…

算法模型嵌入式 Mendix应用的开发示例

一、前言 根据埃森哲最新一项调查&#xff0c;2023年67%的企业持续加大在技术方面的投入&#xff0c;其中数据和AI应用是重中之重。AI在企业内部应用这个话题已经保持了十多年的热度&#xff0c;随着ChatGPT为代表的生成式AI技术的出现&#xff0c;这一话题迎来又一波的高潮。…