SVN必会基本操作
1. SVN简介
1.1 SVN
SVN 分为客户端、服务端,SVNBucket 就是一个 SVN 的服务端,负责托管 SVN 的代码。
我们需要使用 SVN 的客户端来跟服务端打交道。
在 Windows 上,使用 TortoiseSVN,可视化的操作界面,集成右键菜单,非常方便。
1.2 TortoiseSVN 介绍
也叫乌龟SVN,是当前 Windows 上最流行的 SVN 客户端
下载链接:https://svnbucket.com/posts/download-install-svn/
2. SVN的基本操作
命令汇总
- 检出checkout
- 新增add
- 提交commit
- 更新update
- 历史记录
2.1 创建服务器端远程库
添加项目名字和项目简介,目录结构后期可以自己创建
复制远程库地址
2.2 SVN Checkout
桌面新建一个文件夹svntest,作为工作空间,打开文件夹,在空白处右键点击SVN Checkout
在URL of repository中输入刚才复制的远程库地址
Checkout directory中路径为刚才创建的文件夹
点击OK后会让你输入用户名和密码,用户名和密码即为服务器端SVNBucket的登录名和密码
成功之后在会svntest中生成一个.svn的隐藏文件夹,回到桌面发现这个文件夹会出现这样的标志,若没有出现就重启一下电脑
2.3 SVN Commit
在文件夹中创建两个文件,然后右键点击 SVN Commit,会出现以下对话框,此时这些文件还没有提交到服务端
将文件提交到服务端:
在你要提交的文件前面打勾,并可在Message中填写提交信息,点击ok
提交完成后出现以下对话框,表明以及成功提交,Added:2 表明新增了两个文件,并且在文件夹中可看到提交完成后的文件会出现一个标志
在服务端,我们可以查看提交的文件记录和提交信息
2.4 SVN Update
在客户端修改test.txt 文件,此时文件标志会改变
右键点击SVN Update进行更新,提交代码前我们应该update下代码,这是个好习惯,可以避免覆盖别人的代码和代码冲突。
右键点击SVN Commit,会检测出我们更改了test.txt文件,添加提交信息,然后提交。
双击文件,可以查看修改了哪些信息
此时客户端文件状态也发生了变化,查看服务器端,可看到我们的提交记录
2.5 查看日志
点击TortoiseSVN----->Show log
可查看日志
点击对应的版本,可以查看当时提交的文件
3. 撤销及恢复
3.1 撤销本地修改
TortoiseSVN----->Revert
3.2 撤销已提交内容
在图中第三次提交为错误的提交,我们需要把它恢复
在日志中查看已提交的文件,然后点击文件右键点击Revert changes from this revision(复原此版本做出的更改)
TortoiseSVN----->Show log----->Revert changes from this revision
按提示恢复之后,文件为修改状态,此时文件已经恢复到没有修改之前的状态,然后我们再正常进行提交即可
3.3 恢复到指定版本
打开日志,选中你想恢复到的版本,右键点击Revert to this revision
TortoiseSVN----->Show log----->Revert to this revision
4. 忽略文件及取消
4.1 忽略文件
博主在文件夹中新建了两个.cpp的文件,作为此次忽略的对象
如下为忽略之前的服务器端文件内容
在客户端的工作目录下,点击其中一个.cpp文件,右键TortoiseSVN----->Unrevision and add to ignore list ----->可选择忽略此文件(hh.cpp)
然后点击提交
这是服务器端的提交记录和源码
4.2 取消忽略
选中文件,右键TortoiseSVN----->Add
5. 解决冲突
5.1 容易发生冲突的情况
- 多个人修改了同一个文件的同一行
- 无法进行合并的二进制文件
5.2 如何避免冲突
- 经常update同步他人的文件
- 二进制文件不要多个人同时操作
5.3 解决冲突
- 使用他人的
- 使用自己的
- 编辑冲突—就是对比两个文件,然后决定冲突部分的内容使用谁的
6. 分支
6.1 使用分支情况
- 隔离线上版本和开发版本
- 大功能开发,不想影响到其他人,自己独立开个分支去开发
6.2 SVN经典目录结构
- trunk:主干
- branches:分支
- tags:标签
6.3 创建分支
新建trunk、branches、tags这三个文件夹,并把刚才的文件移动到trunk目录下,然后提交到服务器端
新建分支
选中trunk文件夹,右键TortoiseSVN----->Branch/tags
弹出以下对话框之后,把创建分支的路径选择至branches文夹,v1.0为第一个版本,此文件夹不存在会自动创建,点击OK
右键空白处,进行更新,会查看到branches/v1.0中会出现我们之前创建的文件
6.5 合并分支到主干
在日志中,选择更改的版本,点击Merge revision to…
选择trunk文件夹
此时进入到trunk文件夹,发现test.txt文件状态发生改变,只需要更新后进行提交即可
另外如果你有大量的代码需要合并或者不知道哪些提交记录需要合并,可以使用Beyond Compare来进行对比合并。Beyond Compare视频教程
6.6 切换分支
右键TortoiseSVN -----> Switch -----> 选择需要切换的分支,点击确定就可以了
7. 修改仓库地址
如果您的仓库地址变了,不需要重新checkout一份代码
快速更换:右键点击仓库根目录 -----> TortoiseSVN -----> relocate,修改仓库地址,点击确定后就修改好了
8. 代码暂存
暂存作用:
- 代码改了很多,突然需要紧急修复一个bug,但是代码尚未写完,不能提交
- 代码重构了很多,需要发布新版本,但是代码还跑不起来,不能提交
具体使用:
右键TortoiseSVN----->Shelve
会把你修改过的代码列出来
取出暂存:右键TortoiseSVN----->Unshelve----->Apply