集中式版本控制工具 —— SVN

news2024/11/23 22:07:39

一、简介

1️⃣ SVN 是什么?

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

2️⃣ SVN 与 Git 相比有什么优势?

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

3️⃣ 主要应用在哪些情况?

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

4️⃣ 工具推荐

  • SVN 仓库、客户端推荐svnbucket SVN桶
    • 去官网注册 SVN桶 账号
  • 下载 SVN 客户端,此处推荐 TortoiseSVN

二、基本操作

1️⃣ 检出 checkout

  • 在SVN桶官网创建一个项目
    在这里插入图片描述
  • 复制我们的项目地址,来到我们本地文件夹中,鼠标右键选择检出
    在这里插入图片描述
  • 输入我们 SVN桶 的账户用户名和密码,检出完成后会显示我们的仓库目录
    在这里插入图片描述

2️⃣ 新增 add

  • 在我们本地仓库里创建一个文件 a.txt
    在这里插入图片描述

3️⃣ 提交 commit

  • 在仓库中鼠标右键,SVN Commit 会弹出提交页面
    在这里插入图片描述
  • 此时在网站中已经可以看到我们提交的内容了
    在这里插入图片描述

4️⃣ 更新 update

  • 右键仓库空白区域,可以通过 SVN Update 更新我们本地仓库

  • 修改 a.txt 文件,加入一行内容,然后提交,再提交前我们可以查看提交前后的文件差异
    在这里插入图片描述

  • 然后确定提交

5️⃣ 查看历史记录

  • 右键空白区域, Tortoise -> Show log 可以查看日志
    在这里插入图片描述
  • 使用SVN在每次提交之前先更新一下,这是一个很好的习惯,可以减少冲突

三、撤销恢复

1️⃣ 撤销本地修改

  • 先修改我们的 a.txt
    在这里插入图片描述
  • 右键我们的文件 -> 点击 Tortoise -> Revert 【还原】
    在这里插入图片描述
    在这里插入图片描述

2️⃣ 撤销已经提交的内容

  • 编辑 a.txt 文件,然后提交
    在这里插入图片描述
  • 右键仓库空白区域 -> Tortoise -> Show log -> 点击我们错误提交的那条日志 -> revert change this version 【复原此版本做出的修改】
    在这里插入图片描述
  • 此时我们的 a.txt 文件从之前错误版本恢复到了正常版本,处于修改状态,需要我们提交一下
    在这里插入图片描述在这里插入图片描述

3️⃣ 恢复到指定的版本

  • 我们添加新内容、提交,多重复几次,然后恢复到添加新内容之前的版本
    在这里插入图片描述
  • 我们可以 右键空白区域 -> Tortoise -> Show log -> 选择我们要复原到的那个版本的记录 -> Revert to this version 【复原到此版本】
    在这里插入图片描述
  • 可以看到 a.txt 已经恢复到了我们指定版本的内容,接下来只需要我们提交一下就好了
    在这里插入图片描述

四、添加忽略

  • 当有些文件我们并不想提交到我们的仓库中,我们可以添加忽略

    • 创建一个文件b,然后提交到我们的仓库中
    • 忽略一个文件的步骤:
      在这里插入图片描述
  • 忽略后的文件上会有一个 x
    在这里插入图片描述

  • 我们提交一下就会删除我们仓库里已经保存的但我们设置为忽略的数据,完成操作后文件不再拥有SVN的状态
    在这里插入图片描述

  • 当我们想取消忽略,我们可以采用添加或从忽略列表删除来实现
    在这里插入图片描述

五、解决冲突

1️⃣ 什么情况下容易发生冲突?

  • 多个人修改了同个文件的同一行
    在这里插入图片描述

  • 无法进行合并的二进制文件 【以修改图片为例】
    在这里插入图片描述

2️⃣ 怎么避免冲突?

  • 经常 update 同步下他人的代码
  • 二进制文件不要多个人同时操作

3️⃣ 冲突了怎么办?

  • 右键选择冲突解决方式:
    • 使用自己的版本、使用对方的版本、手动编辑冲突文件
      在这里插入图片描述
    • 哪边正确就右键选择使用此文本块
      在这里插入图片描述
  • 对于二进制的冲突文件,我们需要手动进行选择
    在这里插入图片描述

六、分支

  • 什么时候需要分支?

    • 隔离线上版本和开发版本
    • 大功能开发,不想影响到其他人,自己独立开个分支去开发
  • SVN经典目录结构:

    • trunk: 主干 用于存放一些开发中的文件,开发完成后我们就可以生成一个版本,然后存储到 branches分支中去
    • branches:SVN的branches目录是用来保存分支的目录,分支是代码库中的一个独立副本,它可以与主开发线分离并独立发展
    • tags:SVN的tag目录是用来保存代码库的某个特定版本的快照副本的目录,通常用于标记代码库中的重要事件或里程碑

1️⃣ 在我们的仓库下创建三个目录 trunk、branches、tag,然后将当前的文件都存储到 trunk

在这里插入图片描述

2️⃣ 当我们完成了本地开发,想要发布一个线上版本,可以将trunk中的文件生成一个版本存储到 branches

在这里插入图片描述
输入我们的分支保存地址
在这里插入图片描述
我们可以看到 online1.0 已经保存到了我们的 branches
在这里插入图片描述

3️⃣ 但是随着分支的增加,以后可能要更新的内容也越来越多,所以我们可以把这个分支单独的 checkout(检出)出来

复制SVN的地址
在这里插入图片描述
修改文件名并检出到指定目录
在这里插入图片描述
检出后的目录结构
在这里插入图片描述

4️⃣ 同理我们也把 trunk 也 checkout 出来,然后把包含所有的那个删除,只保留我们线上版本和主线版本

  • 我们在主干和分支中修改代码等操作,相互是不影响的

  • 如果我们线上版本修改了,我们可以通过分支合并的方式,将线上版本合并到主干上,完成对主干的修改
    在这里插入图片描述
    合并完成之后,我们到主干目录 commit 一次就好了

5️⃣ 我们根据 trunk 分支再创建一个 online2.0 分支出来,我们无需再通过 checkout 获取文件,可以右键 online1.0 进行分支切换
在这里插入图片描述
点击 Switch 之后,选择我们想切换到的分支
在这里插入图片描述

七、代码暂存

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

在这里插入图片描述


八、复杂代码合并

  • 一般什么情况下才算复杂代码?

    • 主干开发新功能,改了很多代码
    • 分支是线上版本,修复了很多 bug
    • 也就是说两个分支的代码时间久了差异很大,无法直接和并或者指定提交记录合并代码
  • 一般我们都会借助 BeyondCompare 工具来完成复杂代码合并工作
    在这里插入图片描述

  • 右键左右两个目录对比后,会将所有存在差异的文件列出来
    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

RK3568平台开发系列讲解(Linux系统篇)文件系统的读写

🚀返回专栏总目录 文章目录 一、文件IO1.1、文件 IO read()1.2、文件 IO write()二、系统调用层和虚拟文件系统层三、ext4 文件系统层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起学习 read 和 write 调用过程。 一、文件IO 1.1、文件 IO read() rea…

openLdap2.4.44的安装部署

openLdap2.4.44的安装部署 一、安装 1.从yum源拉取 yum install -y openldap openldap-clients openldap-servers 2.复制DB到指定目录 cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG 3.给目录授权 (如果没有ldap ,可…

定时任务框架快速入门

一、Quartz 1. Quartz 概述 Quartz 是一个开源的作业调度框架(job scheduler),几乎可以集成到任何 Java 应用程序中,从最小的独立应用程序到最大的电子商务系统。Quartz 可用于创建简单或复杂的调度来执行数十个、数百个甚至数万个作业;其任务…

[NOIP1999 普及组] Cantor 表

[NOIP1999 普及组] Cantor 表 题目描述: 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 1/1 , 1/2 , 1/3 , 1/4, 1/5, … 2/1, 2/2 , 2/3, 2/4, … 3/1 , 3/2, 3/3, … 4…

win11下载配置Python环境+pycharm下载

前两天快乐的把我重装的win10升级成win11,升级的时候超怕不能成功,但效果还不错,然后突然想学一学Python,所以首先来配置环境吧 一、下载安装包 建议去官网,因为自从有了Python3之后,Python2就慢慢的被淘汰…

测试市场已经饱和了吗?现在转行软件测试会不会太迟?

非常有意思的话题,某种程度上来说,测试职场一条从未设想过的道路真的走通了。 这条路指广大测试呼吁对测试从业进行学历保护、专业保护,就像医学那样设置护城河,以一种令人意想不到的方式完成了。 得益于大量培训机构为了赚钱&a…

R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析

在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…

有趣的Hack-A-Sat黑掉卫星挑战赛——被破坏的阿波罗计算机(解法二)

国家太空安全是国家安全在空间领域的表现。随着太空技术在政治、经济、军事、文化等各个领域的应用不断增加,太空已经成为国家赖以生存与发展的命脉之一,凝聚着巨大的国家利益,太空安全的重要性日益凸显[1]。而在信息化时代,太空安…

全网最火爆,Web自动化测试POM模式分层实战,框架封装看这一篇就够了

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 线性脚本以快递 100…

【可信平台】SO202303191426,销售订单未同步,销售出库单未同步

1.销售订单未同步 这里先说下推送逻辑:1.物料描述带有‘再生’ 。2.公司是芮邦 这个物料应该在EOS里查,可我不会,我在MES里查,的确符合条件。 可信平台同步逻辑,是销售订单同步了,才会同步销售出库单。 这个SO销售订单就没同步,要先解决这个问题。 可以在接口看日志…

HighTec编译器错误记录

目录 1、HighTec安装后缺少Universal Debug Engine 2、HighTec工程改名后不能跳转函数定义,提示找不到定义。 3、HighTec工程重复编译 1、HighTec安装后缺少Universal Debug Engine 在HighTec安装后,没有调试UDE,重装系统后还是没有&#x…

STM32F4_OLED显示

目录 1. OLED简介 2. 硬件模块 3. 8080并行接口 4. SPI方式 5. SSD1306常用命令表 6. 完整源码 (STM32F407对应的源码) 6.1 oled.c 6.2 oled.h 6.3 oledfont.h 7. IIC接口下的OLED(STM32F407搭配4Pin OLED) 7.1 OLED.c 7.2 OLED.h 7.3 OLED_Font.h 7.4 MyI2C.c …

QTableview 隐藏单元格内控件无效的原因

QTableview 隐藏单元格内控件无效的原因 背景: 在QTableview的单元格中创建多个QComboBox,当某条件成立时,隐藏特定单元格中的QComboBox,使得该单元格为空。 DEMO: #ifndef MAINWINDOW_H #define MAINWINDOW_H#inc…

【Redis】Redis键(key)

常用命令 常用案例 keys * 查看当前库所有的key 127.0.0.1:6379> keys * 1) "k1"exists key 判断某个key是否存在,存在几个则返回几,不存在则返回0 127.0.0.1:6379> exists k1 (integer) 1 127.0.0.1:6379> exists k2 (integer)…

西工大电子实习单片机-7+1亮灯编程C语言代码分享

电子实习是西工大大多数学生绕不开的一门实习课程。单片机是电子实习课程中较为重要的一部分,需要上两次。我们在单片机编程时在西工大电脑机房老系统上往往由于大一学习的C语言忘得一干二净而无从下手。流水灯成了流水账。 废话不多说,仅供参考。71是指…

分享5款办公效率工具|让你早点下班

如果每天你的工作都很多,做不完需要加班怎么办? 不知道你会不会加班,但是我肯定不会,因为我知道哪些高效率的办公工具,可以帮助我早点下班,今天来给大家分享一下。 1.FlowUs FlowUs 是一款为个人和团队打造的新一代生…

Netty通信技术进阶二

Netty核心组件 1. Bootstrap2 Channel3. EventLoopGroup 和 EventLoop3.1 eventLoopThreads 是多少? 4. ChannelHandler & ChannelHandlerContext & ChannelPipeline4.1 复用Handler4.2 ChannelInboundHandlerAdapter or SimpleChannelInboundHandler 5. By…

Linux系统之部署ZFile在线网盘服务

Linux系统之部署ZFile在线网盘服务 一、ZFile介绍1.ZFile简介2.ZFile特点 二、本地环境介绍1.本次实践说明2.本地环境规划 三、安装环境依赖1.安装java2.检查java版本 四、下载ZFile软件1.创建安装部署目录2.声明安装路径3.下载ZFile软件包4.解压ZFile软件包5.授权启动停止脚本…

FOC专题--环路PID算法拆分分析

foc中,其实foc算法并不是最难理解的,反而是在其中使用的PID算法,之前我只会套用别人的代码,但并不理解其中的各参数含义,导致在实际调整PI参数的时候,很难调到合适的值。 在实际理解什么是PID算法以及各参数…

【C++引用 】

目录 前言一、引用的概念二、使用引用时注意事项三、引用的使用场景及优势四、常引用、引用的权限五、引用和指针的区别 前言 相信大家应该在网上看过这样的段子。 大家都知道鲁迅原名周树人,浙江绍兴人。"鲁迅"是"周树人"的别名或者说是笔名…