SVN使用教程 - 快速上手

news2024/9/25 3:28:35

参考视频:

SVN使用教程 - 快速上手

一、SVN简介

1、SVN的功能

(1)SVN是一种代码版本管理工具,它能记住程序员每次修改的内容,可以查看所有的历史修改记录,可以将代码恢复到任何历史版本,可以恢复已经删除的文件

(2)SVN需要一个服务端,也就是SVN仓库(比如SVN桶,下面都以此为例),“仓库”顾名思义就是用来“放东西”,操作仓库中的文件则需要通过SVN客户端(比如TortoiseSVN,下面都以此为例)。

2、SVN相较于Git的优势

(1)SVN使用更加简单,上手更快。

(2)SVN有目录级权限控制,不够级别的成员可能无法访问部分文件,为项目安全提供了保障。

(3)SVN可以进行子目录CheckOut,减少不必要的文件检出。

3、SVN的应用场景

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

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

(3)企业内部文件共享,并且能按目录划分权限

二、SVN基本操作

1、创建新项目

        打开SVN桶中的项目列表,如下图所示,点击“创建新项目”。

        如下图所示,输入项目名字和项目简介,然后点击“创建私有项目”。(如果勾选自动创建trunk、branches、tags目录结构,那么项目创建时会生成三个文件夹,这是经典的目录结构)

2、检出(checkout)

        进入项目中后,如下图所示,点击“复制”。

        在本地的工作区文件夹中右键选择“SVN检出”,将刚刚复制的内容粘贴到下图所示红框中的第一个输入区,第二个输入区需要填入项目在本地中的路径,填写完毕后点击“确定”。

        输入注册SVN桶时的用户名和密码,完成认证。

        检出完成后,工作区就为项目创建了一个文件夹,文件夹图标上的绿色勾勾代表其中的文件和SVN服务端建立关系。

3、新增(add)和提交(commit)

        将需要新增的文件添加进项目文件夹中,然后在本地的项目文件夹中右键选择“SVN提交”,如下图所示,选择需要新增的文件,可以输入提交描述,然后点击“确定”即可。

        新增成功的结果如下图所示,新增成功后,本地文件(或文件夹)的图标上会有一个绿色勾勾,代表文件(或文件夹)和SVN服务端建立关系。

4、更新(update)

        在本地的项目文件夹中右键选择“SVN更新”,即可将SVN仓库中的文件更新至本地。

5、修改后提交(commit)

        修改文件,然后在本地的项目文件夹中右键选择“SVN提交”,在弹出的窗口中双击修改过的文件,可以查看修改前后的对比,没有问题的话点击“确定”即可提交。

        提交完成后,可以在SVN仓库中看到修改记录。另外,在本地的项目文件夹中右键选择“TortoiseSVN”→“显示日志”,也可以查看提交记录。

三、撤销和恢复

1、撤销本地的修改

        在本地修改过的文件(还未提交),如果想要恢复至上一版本(上一版本指的是最后提交至云端的版本),可以右键目标文件选择“TortoiseSVN”→“SVN还原”,或者右键空白区域选择“SVN提交”,右键欲恢复的文件,选择“SVN还原”即可。

2、撤销已提交内容

        如果不小心将错误的修改版本提交上去,可以在本地的项目文件夹中右键选择“TortoiseSVN”→“显示日志”,右键选择错误的提交记录,选择“复原此版本作出的修改”即可将错误的版本恢复至上一版本。值得注意的是,这里的撤销仅恢复了本地文件的修改,在这之后要将文件重新提交,云端上的错误版本才会被“覆盖”。

3、恢复到指定版本

        如果想将本地的文件恢复到指定版本(不局限于上一个版本),可以在本地的项目文件夹中右键选择“TortoiseSVN”→“显示日志”,右键选择目标版本的提交记录,选择“复原到此版本”即可将本地的文件恢复到指定版本。

四、忽略

1、忽略文件夹

        有时并不是需要提交项目文件夹中的所有文件夹,这时可对不需要提交的文件夹添加忽略,具体方法为右键需要忽略的文件夹,选择“TortoiseSVN”→“去除版本控制并增加到忽略列表”,这样,下次提交时就不会将该文件夹上传至SVN仓库(如果提示目录过期,那么“SVN更新”以后再提交即可),同时SVN仓库中相应的文件夹也会被移除。

        如果想移除文件夹忽略,可以右键项目文件夹空白区域,选择“TortoiseSVN”→“属性”,双击被忽略的文件夹值,清空其取值后点击“确定”,然后将项目再次提交,即可将文件夹忽略撤销。

2、忽略文件

        对于doc文件夹中新添加的一个text文本文件,如果想将其忽略,那么提交时右键该文件,选择“添加到忽略列表”,或者直接右键该文件,选择“TortoiseSVN”→“增加到忽略列表”即可,对于后者,可应用在已提交过的文件上,下次提交时就不会将该文件上传至SVN仓库,同时SVN仓库中相应的文件也会被移除。

        如果想移除文件的忽略,可以右键该文件,选择“TortoiseSVN”→“加入”,或者选择“TortoiseSVN”→“从忽略列表删除”即可。

五、解决冲突

1、可能发生冲突的情况

(1)多个用户修改了同一个文件的同一行(如果是不同行,一般都能够自动合并)。

(2)多个用户修改了无法进行合并的二进制文件。

2、减少冲突的方法

(1)经常使用“SVN更新”同步其他人的修改版本再做修改(需要说明的是,更新并不等于备份/复制/拷贝,可认为是将其他人在文件上做的修改视作补丁打到自己本地的文件上,自己对本地文件的修改也可视作补丁,只要几块补丁没有覆盖同一行就能自动合并)。

(2)对于二进制文件,不要多个人同时操作。

3、解决冲突的办法

        如果确实产生了冲突,那么在更新文件时将会报错,这时可以右键冲突信息,选择保留对方的修改(使用“他们的”文本块解决冲突)或者保留自己的修改(使用“我的”解决有冲突的文件),亦或者是选择“编辑冲突”进行手动合并(红色区域表示有冲突需要解决)。

        对于图片这种二进制文件,如果产生冲突,可以在更新文件报错时右键冲突信息,选择“编辑冲突”,从冲突版本(本地版本、上一个版本、其他人修改的版本)中选择其中一个版本。

六、分支

1、需要开分支的情况

(1)隔离线上版本和开发版本。

(2)大功能开发,文件过多可能会影响其他人,需要自己独立开个分支去开发,开发完成后再合并回来。

2、分支操作

(1)SVN经典目录结构为trunk(主干)、branches(分支)、tags(标签),这三个目录可自主创建,也可在SVN仓库中新建项目时自动创建。

(2)从主干开分支:右键主干文件夹,选择“TortoiseSVN”→“分支/标记”,修改路径为分支文件夹,在其下新建一个由分支命名的文件夹(比如线上版本1.0),分支中的文件一般选用最新版本,点击“确定”后更新一下即可。

(3)分支单独检出:右键小分支文件夹,选择“属性”,获取其URL,然后在项目文件夹的上一级(也就是存放项目文件夹的工作区文件夹)右键选择“SVN检出”,将刚刚获取的URL填入版本库URL中,检出目录名可以修改一下,然后完成检出即可,这样,即使删掉本地的项目文件夹,仍可以在检出的子目录文件夹中做修改,不会影响项目的其它子目录。

(4)分支修改后合并到主干:在分支文件夹中对文件进行修改后,将分支提交,然而这样还不能让主干文件夹中的相应文件同步发生改变,这时可以右键分支文件夹,选择“TortoiseSVN”→“显示日志”,右键需要合并的修改记录,选择“合并版本到”,再选择主干文件夹,这样,本地的主干文件夹中的相应文件就会同步分支中的修改,接着再将主干提交即可。

 (5)分支切换:假设当前有两个分支(第二个分支的含义为线上版本2.0),右键本地的分支(线上1.0版本)文件夹,选择“TortoiseSVN”→“切换”,路径选择2.0版本的分支文件夹,然后点击“确定”即可,不过本地的文件夹名称不会改变,如果需要则自行修改即可。

七、暂存

1、需要代码暂存的情况

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

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

2、代码暂存

        修改了项目文件夹中的一些代码文件后,右键本地文件夹,选择“TortoiseSVN”→“贮藏...(Shelve...)”,然后选择需要暂存的文件,之后对本地文件的修改是否保留做选择。

3、取出代码暂存

        右键本地文件夹,选择“TortoiseSVN”→“取消贮藏...(UnShelve...)”,根据名称选择对应的暂存,对于同一个名称的暂存,它按照时间排序会有不同的版本,根据需要选择对应的版本,然后单击“应用(Apply)”,即可将本地的文件同步为暂存版本。

八、复杂代码合并

1、需要代码合并的情况

(1)主干开发了新功能,改了很多代码。

(2)分支是线上版本,修复了很多bug。

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

2、使用Beyond Compare工具合并代码

        打开两个目录,这里演示的是一个版本分支文件夹和主干文件夹。

        选择目录下的文件夹,右键选择“比较内容”,点击“开始”,Beyond Compare会将有差异的文件全部用红色不等号标出(点击上方工具箱的“全部”可显示全部无差异文件,点击上方工具箱的“差别”可仅显示有差异文件)。

        双击文件即可进行处理,如下图所示,处理完成后按下快捷键Ctrl+S保存即可。

        两边目录下的文件数目不一定完全对应,对于一边有而一边没有的文件,可以选择删除己侧的文件,或者将己侧的文件复制到对方。

        分支的修改合并到主干上后,将主干提交即可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Mysql】第十一章 事务-重点(原子性+持久性+隔离性+一致性)

文章目录 一、概念1.查看事务支持版本-show engines2.事务提交方式-show variables like autocommit3.事务常见操作方式1.将mysql的默认隔离级别设置成读未提交,方便看到实验现象2.需要重启终端,进行查看隔离级别3.创建一个银行用户表4.演示 - 证明事务的…

【Transformer】关于RNN以及transformer的相关介绍

文章目录 RNNTransformer是干什么的?什么是 Word Embedding ?什么是 Word2vec ?CBOW(Continuous Bag-of-Words Model)Skip-gram(Continuous Skip-gram Model)Word2vec 的优缺点 Transformer整体架构注意力机制self-attention(自注…

生成式人工智能助力6G核心技术

崔曙光 加拿大皇家科学院 加拿大工程院双院院士 主要工作:适配改造人工智能算法,来满足通信网络性能 从基础LLM到专用LLM:四个必须面对的问题 如何选择合适的基础LLM规模如何让基础LLM读懂专用领域信息如何避免基础LLM的幻觉现象&#xf…

第9天 xxl-job

使用xxl-job需要建表 引入依赖 添加配置 Bean public XxlJobSpringExecutor xxlJobExecutor() {logger.info(">>>>>>>>>>> xxl-job config init.");XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();xxlJo…

sql注入——sqlilabs16-26

文章目录 less-163.注入 less-172.数据库名2.1 floor报错注入数据库名 3.查到数据表3.1floor 报错注入数据表 4.查取列名4.1 floor报错注入 列名 5.查取内容 less-181.添加X-Forwarded-For测试2修改User-Agent测试3.查数据表名4.查数据列5.查取数据 less-192.查数据库3.查数据表…

医疗大健康解决方案HIS方案

本篇接上篇文章医疗大健康解决方案HIS方案-CSDN博客,介绍第二部分区域医疗解决方案。 依托腾讯云优势,联合合作伙伴,连接政府、医疗服务机构、医药研发与流通、康养等,构建医疗大健康产业云生态,助力数字化升级。 方…

小怡分享之数据结构基础知识准备

前言: 🌈✨之前小怡给大家分享了JavaSE的知识,今天小怡要给大家分享一下数据结构基础知识。 一、初识集合框架 1.什么是集合框架 Java集合框架Java Collection Framework, 又称为容器container,是定义在Java.util 包…

Linux服务器基于NFS实现共享目录

NFS简介:NFS(Network File System)是一种分布式文件系统协议,允许用户通过网络访问远程计算机上的文件和目录,就像访问本地文件一样。NFS 最初由 Sun Microsystems 在 1984 年开发,现在已经成为类 Unix 系统…

SpringBoot企业人事管理系统-附源码与配套论文

1.1引言 随着计算机技术的飞速发展,计算机在各种单位机构管理中应用的普及﹐管理信息系统的开发在强调管理、强调信息的现代社会中也显得越来越重要。因此,利用计算机高效率地完成人事管理的日常事务,是适应现代各种单位机构制度要求、推动各种单位机构…

【项目】火灾烟雾检测管理系统。PyQT5+QT Designe+YOLOv8_ssod半监督算法+OpenCV

【项目】火灾烟雾检测管理系统。PyQT5QT DesigneYOLOv8_ssod半监督算法OpenCV 0.摘要1.引言2.烟雾检测算法2.0图像标注2.1 YOLOv8全监督算法结构2.2 Efficient-Teacher半监督算法结构 3.性能对比图4.源码、论文获取 0.摘要 火灾是常见而危险的自然灾害,不仅对人类生…

数值分析【3】

目录 第四章 插值 边角料: 分段二次插值——三个一插​编辑 三次样条插值 小结:等距看差分​编辑 第五章 最小二乘 第六章 数值积分 代数精度​编辑 第四章 插值 边角料: 分段二次插值——三个一插 三次样条插值 三次阳台函数是光滑…

Oracle一对多(一主多备)的DG环境如何进行switchover切换?

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步? 1、环境说明 本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下: 数据库IPdb_unique_n…

落子“用户Happy”,vivo的“做活”与“长气”之道

有人说,中国手机行业,是名副其实的“Hard”模式。竞争焦灼,内卷不止。然而,这种主观的判断,也许从侧面反映出另一个客观事实:中国手机市场,凭借巨大的用户规模、多元化的消费倾向、自由展开的科…

从微软蓝屏事件聊到数据库系统中的纸牌屋

2024 年 7 月 19 日,全球约有 850 万台 Windows 电脑崩溃,无法重启,陷入蓝屏死机状态。这次故障影响了全球各地的企业和政府,波及运输、金融服务、医疗保健等绝大多数行业。 故障发生几小时后,蓝屏原因找到&#xff0…

Python 数组计算逻辑

a{1,2,3} b{2,3,4} 与 & 交集(取中) a&b{2, 3} 或 | 并集 (左中右) a&b{1,2,3,4} 差集 ^ 取左右 a^b {1,4} 减 - 取左 a - b {1} a-b {1}

同态加密和SEAL库的介绍(二)BFV 基础方案实现

写在前面: 本篇具体讲解如何使用 BFV 加密方案对加密的整数进行简单的计算(一个多项式评估),来源是官方提供的示例。BFV 是比较常见的方案,在很多大模型推理的时候,都是将浮点数的权重和输入变换成…

新品周销量20W+,月GMV1300W+,黑马品牌如何实现快速突围?

随着视频号用户的不断增加,直播带货生态的不断发展,越来越多的品牌也开始入局视频号。 近期友望数据发现,不少新品牌在视频号上脱颖而出。比如服饰内衣行业品牌「瑰菲女神」,专注女性内衣裤行业,周销量近20W件&#xf…

Java 并发(二)—— AQS原理

AQS,全名AbstractQueuedSynchronizer。 抽象队列同步器定义多线程访问共享资源的同步模板,解决了实现自定义同步器时涉及的大量细节问题,简化开发两种同步状态:独占、共享核心组件:State变量、CLH变体队列、获取 / 释…

Leetcode每日刷题之75. 颜色分类(C++)

有接触过数据结构的同学应该知道排序有很多种类,我之前也出过一篇 排序大杂烩 的博客,其中包含了一部分排序的讲解,排序在我们学习编程的过程中有着至关重要的作用,不论是大部分新手刚开始接触的冒泡排序还是C库中的sort函数&…

对象类作为类成员(详解版)

我们在第13行创建了一个人的类,并且给它赋予了两个属性,一个为int 类型的age,另一个则是Phone类型的 name,众所周知class类是一个自定义的数据类型,和struct相似,两者在默认情况下的权限不一样。而我们这时候没有Phone的数据类型&…