SVN 学习笔记

发布时间 2023-05-27 16:56:35作者: Swbna

SVN 简介和安装

SVN是什么?

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

SVN跟Git相比,有什么优势?

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

SVN 主要应用

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

SVN仓库

推荐:svnbuket.com,SVN桶
现在最好用的SVN服务

安装SVN客户端

TortoiseSVN ——Windows
Cornstone ——Mac

SVN 基本操作

  • 检出 checkout
  • 新增 add
  • 提交 commit
  • 更新 修改之后重新提交
  • 历史记录

示例

(1)新建一个项目(仓库)

image.png
创建完成之后,选择右上角的地址,复制
image.png

(2)检出 checkout (从仓库中拿出来)

image.png
鼠标右键,选择 SVN checkout
image.png
image.png

输入用户名和密码(网站该仓库的名,和账号的密码)
image.pngok之后
image.png

(3)创建几个文件提交上去 commit

image.png
右键,选择 SVN commit,选择要添加的文件,再添加提交信息
image.png
ok之后
image.png
在远端仓库刷新
image.png
还可以看到提交记录
image.png

(4)更新操作 修改之后重新提交

打开1.txt,添加”1234“,测试一下
image.png
选择右键,SVN commit
image.png
我们可以双击1.txt,可以看到变更的内容
image.png
选择ok后
image.png
网站上看到变更记录
image.png

(5)查看日志

image.png
这样我们就可以看到所有的提交记录了
image.png

SVN update 使用

在每次提交之前,我们可以使用右键,选择 SVN update,更新一下,避免冲突。

SVN 撤销和恢复

  • 撤销本地修改
  • 撤销已提交内容
  • 恢复到指定版本

撤销本地修改

(1)例如 修改1.txt文件 添加了67
image.png
(2)已经保存了,退出来了。这是我们不想修改了。
右键,选择 乌龟SVN,选择 Revert
image.png
或者 在SVN 提交里面,选择1.txt,右键 SVN 还原
image.png
点击还原之后,选择要还原的文件,确定
image.png

撤销已提交内容

(1)先修改1.txt内容,提交上去
image.png
官网看见:
image.png
本地查看日志:(也可以看见)
image.png
选择错误的提交版本,右键选择红框
image.png
注意恢复之后,要重新提交

恢复到指定版本

本地查看日志:(也可以看见):选择要恢复的某个版本
image.png
注意恢复之后,要重新提交

SVN 添加忽略

(1)有些时候我们有些文件不想提交,可以选择忽略
image.png
现在重新提交,他会把那些文件都删除
image.png
(2)我们也可以在提交时,忽略
image.png
(3)现在我们不想忽略了,可以选择 从忽略列表中删除
image.png
现在就又可以提交了
image.png

SVN 解决冲突

  • 什么情况容易发生冲突?
    • 多个人修改了同个文件的同一行
    • 无法进行合并的二进制文件
  • 怎么避免冲突?
    • 经常update同步下他人的代码
    • 二进制文件不要多个人同时操作
  • 冲突了怎么办?

选择 SVN update,发生冲突。

  • 编辑冲突
  • 使用他们的
  • 使用我的
  • 标记已解决

image.png
编辑冲突
image.png

分支

  • 什么时候需要分支?
    • 隔离线上版本和开发版本
    • 大功能开发,不想影响到其他人,自己独立开个分支去开发
  • SVN 经典目录结构
    • trunk 主干
    • branches
    • tags

创建经典目录

(1)可以在创建项目时,直接选择创建
image.png

(2)也手动创建 3个目录
image.png
然后把那2个文件,放到trunk上,然后提交
image.png
这样目录结构就正确了
image.png
image.png

创建分支

image.png
修改路径等信息
image.png
image.png
更新 SVN update,就可以看到onlinev1.0
image.png

切换分支

代码暂存

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

这时就需要我们暂存。

image.png
image.png

取消暂存

image.png
image.png

复杂代码合并

  • 情况

    • 主干开发新功能,改了很多
    • 分支是线上版本,修复了很多bug
  • 两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码

  • 使用工具 BeyondCompare