目录
[1. SVN定义:](#1. SVN定义:)
[2. SVN特点:](#2. SVN特点:)
[1. SVN 服务端下载、安装与配置(Windows版):](#1. SVN 服务端下载、安装与配置(Windows版):)
[2. SVN客户端下载与安装:](#2. SVN客户端下载与安装:)
[1. SVN三大指令:](#1. SVN三大指令:)
[(1) 检出(Checkout):](#(1) 检出(Checkout):)
[(2) 提交(Commit):](#(2) 提交(Commit):)
[(3) 更新(Update):](#(3) 更新(Update):)
[2. 其他常用功能:](#2. 其他常用功能:)
[(1) 与前一版本比较](#(1) 与前一版本比较)
[(2) 显示日志,比较版本差异](#(2) 显示日志,比较版本差异)
[(3) 更新至版本(版本回退)](#(3) 更新至版本(版本回退))
[(4) 获取锁定](#(4) 获取锁定)
[(5) 版本库浏览器](#(5) 版本库浏览器)
[(6) 忽略文件](#(6) 忽略文件)
[(7) 解决冲突](#(7) 解决冲突)
[(8) 属性](#(8) 属性)
[3. SVN 常见图标及含义:](#3. SVN 常见图标及含义:)
[(1) 常见的SVN图标如下图:](#(1) 常见的SVN图标如下图:)
一、SVN概述
1. SVN定义:
SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
2. SVN特点:
(1)集中式管理:所有文件版本都存储在中央服务器,客户端只有工作副本,没有完整历史记录;管理员可以轻松掌握每个人的开发权限。
(2)全局版本号:每次提交都会生成一个唯一的全局版本号,不同文件的修改共享同一个版本号,方便回溯和对比。
(3)原子提交:提交操作要么全部成功,要么全部失败,不会出现部分文件更新而其他文件未更新的情况,保证版本完整性。
(4)分支和标签管理:通过目录复制实现分支和标签,结构清晰,适合企业级项目管理。
(5)网络依赖:必须联网才能工作,操作都依赖中央服务器,对网络带宽有一定要求。
(6)权限控制:支持路径级别的访问权限设置,可以针对不同目录或文件分配不同的访问权限。
二、SVN下载与安装
1. SVN 服务端下载、安装与配置(Windows版):
参考我写的另一篇文章,点击跳转到SVN服务端下载、安装与配置(Windows版)。
2. SVN客户端下载与安装:
参考我写的另一篇文章,点击跳转到 TortoiseSVN 下载与安装。
三、SVN使用
1. SVN三大指令:
(1) 检出(Checkout):
SVN检出是从服务器把代码或文档下载到本地。
**注意:**Checkout只在第一次链接时操作一次,以后如果进行更新操作需使用Update指令。
步骤:
① 在空白目录中"右键 -> SVN检出(K)...":
② 录入版本库URL(新仓库创建完成时显示的"仓库URL")和准备存放的路径:
③ 录入用户名和密码,勾选"保存认证"后,点击"确定":④ 等待系统检出完成:
⑤ 检出完成后,文件夹中多了一个.svn的隐藏目录(我的是空仓库,所以没有其他文件):
(2) 提交(Commit):
把本地写好的代码上传到服务器,让团队其他人能同步到你的改动。
步骤:
新建文件 --> 右键 --> SVN提交(C)...
(3) 更新(Update):
把服务器上的最新代码拉到本地,确保你基于最新版本开发。
步骤:
右键 --> SVN更新(U)...
2. 其他常用功能:
(1) 与前一版本比较
查看当前文件(或工作副本)和上一次提交版本之间的具体改动。
步骤:
在文件(或文件夹)上右键 --> TortoiseSVN --> 与前一版本比较(D)
效果如下图:
(2) 显示日志,比较版本差异
查看仓库提交历史日志,每次commit都会生成一条日志记录。
步骤:
在文件(或文件夹)上右键 --> TortoiseSVN --> 显示日志(L)
效果如下图:
日志里的每一条记录,对应一个修订号。比较任意两条日志差异,本质就是:比较两个修订版本的代码差异,不限于相邻版本。
步骤:
① 选中两个版本(可以不相邻),右键-->点击"比较版本差异(C)":
② 版本2和版本4的差异如下:
(3) 更新至版本(版本回退)
把本地工作副本更新到仓库某个指定历史版本。
步骤:
① 在文件上右键 --> TortoiseSVN --> 更新至版本(U)...,在打开的页面点击"显示日志(L)":
② 选中要回退的版本后(版本3),点击"确定":
③ 刚才选中的版本号(版本3)会显示在下面位置,然后点击"确定":
④看到这个提示,说明回退完成:
(4) 获取锁定
只有你当前这个工作副本,可以提交该文件;其他人提交这个文件会直接被服务器拒绝,防止多人同时修改产生冲突。
步骤:
在文件(或文件夹)上右键 --> TortoiseSVN --> 获取锁定(K)
锁定成功提示如下:
(5) 版本库浏览器
用来直接浏览服务器上的版本库(仓库),不需要本地工作副本。
步骤:
在文件(或文件夹)上右键 --> TortoiseSVN --> 版本库浏览器(R)
效果如下图:
(6) 忽略文件
有些文件不希望上传至svn服务器,应该将该文件或该类型的文件添加至忽略列表。
步骤:
在文件(或文件夹)上右键 --> TortoiseSVN --> 增加到忽略列表(I) --> "可忽略
文件.docx"
|--------------------------|----------------------------------------|
| 可忽略文件.docx | 只忽略文件名叫"可忽略文件.docx"这一个文件。 |
| *.docx | 忽略本文件夹下所有后缀docx文件。 |
| 可忽略文件.docx(recursively ) | 本文件夹 + 所有子文件夹,只要文件名是"可忽略文件.docx",全部忽略。 |
| *.docx(recursively ) | 本文件夹 + 所有子文件夹,所有docx文件全部忽略。 |
| recursively = 递归遍历整棵目录树,包含当前选中目录,连同所有子目录、子目录下全部文件。 ||(7) 解决冲突
系统提示:
① 当修改完某个文件准备"提交"时,系统提示"提交失败",提示信息如下,说明在你提交前有其他人已经提交过此文件,此时需先更新工作副本。
② 由于你本地文件已经修改过,在点击"更新"后,系统提示信息如下:
解决步骤:
① 产生冲突时,更新后在当前目录下会多出3个文件,如下图:
说明:
|----------------------|---------------------------------------------------------------------------------------------------|
| HelloWorld.java | 主文件,里面带冲突标记。 <<<<<<<和=======之间:**你的本地修改** =======和>>>>>>>之间:**服务器上别人提交的修改** |
| HelloWorld.java.mine | 更新操作之前,你本地修改后的版本。 |
| HelloWorld.java.r3 | 基础版本(版本号为:3),你上次更新后、还没做任何修改的原始文件,是你和对方共同的起点版本。即:你们两个人都是基于 r3 这个版本开始修改代码。 |
| HelloWorld.java.r8 | 服务器最新版本(版本号为:8),别人已经提交到 SVN 仓库的版本(r8),即:别人改完提交后的代码。 |② 打开HelloWorld.java文件:
③ 保留你们俩人修改的内容,并删除SVN生成的标记行,如下图:
④ 删除另外3个文件(即:.mine/.r3/.r8):
⑤ 重新提交SVN:
(8) 属性
查看某个文件(或文件夹)在SVN仓库里的完整路径(仓库地址 + 目录 + 文件名)。
步骤:
在文件(或文件夹)上右键 --> 属性(Windows属性窗口) --> 切换到
"Subversion"标签页:
3. SVN 常见图标及含义:
(1) 常见的SVN图标如下图:
"常规":文件与版本库完全同步,没有本地修改,这是最理想的状态。
"冲突":更新时产生了冲突,说明你和其他人改了同一处代码,需要手动处理解决冲突。
"已删除":文件或文件夹被计划删除,或者表示文件缺失。
"增加":文件或文件夹已被计划加入版本控制,但还没提交,是新加入的文件。
"无版本控制":表示暂时还没有版本的控制,但没有被忽略。
"修改":文件被本地修改过,但还没提交,需要尽快 commit。
"只读":文件是只读的,这是设置只读属性后才会出现的标识,编辑前需要先获取文件锁。
"锁定":表示文件被锁定,必须先释放锁才能让别人的修改提交。
"忽略":文件不受版本控制,已被忽略。



























