1. 简介
SVN(Subversion)是一个集中式版本控制系统,用于管理和跟踪软件开发项目中的代码变更。与分布式版本控制系统(如Git)不同,SVN使用集中式的仓库来存储代码,并提供了一套客户端工具来与仓库进行交互。
什么是SVN
- 代码版本管理工具
- 它能记住你每一次的代码修改
- 查看所有的修改记录
- 恢复到任何历史版本
- 恢复已经删除的文件
主要应用
-
开发人员用来做代码的版本管理
-
用来存储一些重要的文件,比如合同
-
公司内部文件共享,并且能按目录划分权限
SVN仓库
- svnbucket.com
客户端
- TortoiseSVN
2. SVN基本操作
2.1 检出checkout
- 在网站上创建项目,复制地址
- 进入本地文件夹,右键选择SVN检出
- 此时本地文件夹已经与远程仓库建立联系,可以放入文件
- 右键选择SVN提交
- 更新操作:右键点击SNV更新(提交文件前需要进行SVN更新,即将本地库与远程库同步)
- 文件修改后需要再次提交(可以双击文件查看修改前后对比)
- 查看日志:右键进入TortoiesSVN/显示日志
3. 撤销和恢复操作
1、撤销本地修改
方法1:选中文件->右键点击TortoiesSVN/SVN还原->确定
方法2:在提交页面选中文件->右键点击SVN还原
2、撤销已提交内容
进入日志->右键点击修改版本->复原此版本做出的修改->提交
3、恢复到指定版本
进入日志->右键点击需要恢复的版本->提交
4. 忽略文件与文件夹
不想提交某个文件或文件夹时的操作
方法1、直接忽略文件或文件夹
右击文件夹->TortoiseSVN/去除版本控制并增加到忽略列表/文件夹名(再次操作或加入可移除忽略列表)
方法2、在提交页面忽略文件或文件夹
在提交页面->右击文件->增加到忽略列表/文件名->提交
5. 冲突解决
- 什么情况容易发生冲突?
多个人修改了同个文件的同一行,无法进行合并的二进制文件
- 怎么避免冲突?
经常update同步下他人的代码,二进制文件不要多个人同时操作
- 发生冲突时解决办法
方法1:在更新完成页面->右击冲突->使用"他们的"文本块解决冲突(舍弃当前修改使用对方版本)
方法2:在更新完成页面->右击冲突->编辑冲突->右击需要的内容->使用此文本块->点击标记为已解决
6. 分支
- 为什么需要开分支?
隔离线上版本和开发版本;自己开发独立分支,不想影响到其他人
- SVN经典目录结构:
trunk(主干)
branches(分支)
tags(标签)
- 创建目录结构
方法1:在服务器创建项目时勾选目录结构
方法2:在本地仓库新建这三个文件夹
- 创建分支
右击主干->TortoiseSVN/分支->路径选择为分支目录/分支名->填写日志信息->勾选版本库中的最新版本->确定
(此时分支创建在服务器)
- 进入分支目录后更新SVN即可在本地创建分支文件
- 可以右击分支和标签,点击属性,复制URL;然后单独将其Checkout进行检出,即可创建一个与主干之间不会相互影响的分支
- 合并分支(修改分支后,需要同步到主干时的操作)
右击分支->TortoiesSVN/显示日志->右击需要合并的版本->合并版本到->选择主干目录->提交(合并本地主干,不会提交到远程)
- 切换分支
右击主干->TortoiesSVN/切换->选择分支路径->确定(将本地主干切换为远程某个分支)
- 注意:删除分支目录时需要右击目录->TortoiesSVN/删除
7. 代码暂存
-
为什么要使用代码暂存?
代码改了很多,突然需要紧急修复一个bug,但是代码还没写完,不能提交
代码重构了很多,突然需要发布新版本,但是代码还跑不起来,不能提交。
- 修改代码后,右击当前目录->TortoiesSVN/贮藏->勾选需要暂存的文件->中间框输入暂存名(feature1),下方框填写日志信息
- 点击储存点:本地文件不会改变;|| 点击贮藏:会取消本地修改,恢复为服务器上的版本
- 恢复暂存代码:右击目录->TortoiesSVN/取消贮藏->选择名称和版本->应用
8. 复杂代码合并
- 情况:主干开发新功能,改了很多分支是线上版本,修复了很多bug
两个分支的代码时间久了差异很大,无法直接分支合并或者指定提交记录合并代码
-
进入Beyond Compare(在此代码输入中文会导致乱码)
-
左上角输入分支路径,右上角输入主干路径
-
点击向下箭头,右击文件点击比较,即可比较主干与分支的差异
-
双击文件可进入内容对比,点击黄色箭头即可相互合并内容(记得保存)
- 文件为黑色表示两边文件完全相同,文件为红色表示文件有差异,文件为紫色表示另一边没有这个文件