前言 {#前言}
今天和大家分享一下SVN的进阶知识,主要是对于有SVN基础的朋友。简单回顾一下上一篇基础知识。
一、SVN简介 {#一、SVN简介}
-
什么是SVN?
SVN全称为Subversion,是一个开源的版本控制系统。
SVN = 版本控制 + 备份服务器 -
什么是TortoiseSVN?
TortoiseSVN是Subversion系统的开源客户端。
TortoiseSVN = 可视化操作的SVN -
TortoiseSVN几种常见的文件下标
二、SVN移动和复制 {#二、SVN移动和复制}
问题一:文件位置错误,如何移动文件至正确的位置?
1.方法一:左键选中拖动到想移动到的位置,但这个时候commit显示我们的文件是Missing状态如图
总结:左键拖动 = delete当前目录的文件 + 想要移动的目录增加没有上传SVN的文件
2.方法二:右键选中拖动到想移动到的位置
总结:右键拖动 = delete当前目录的文件 + add预期目录的文件
综上所述:右键拖动比左键拖动更快捷,节省了一步add的操作。第一步移动过来之后还需要add一下,把状态missing改成added方可提交,但是右键拖动的话状态直接就是added,下一步可直接提交。
问题二:如何复制文件至正确的位置?
1.方法一:右键拖动时会弹出选项,如图
和刚才一样,如果是移动的话就选SVN Move versioned item(s) here,如果是复制的话就SVN Copy versioned item(s) here
2.方法二:右键文件 Copy to ... 然后填写我们的新名字,对应新的路径即可
三、版本比较 {#三、版本比较}
1.问题:文件内容变化,如何查看历史版本?
show log 查看文件变更记录,选中相对应的版本,右键open可以打开查看历史文件
2.问题:文件内容变化,如何进行版本比较?
-
方法一:Diff/Diff with pervious version
-
方法二:show log ,compare with working copy
注意:
- Compare with working copy:和本地的文件进行比较
- Compare with previous revision:和上一版本的文件进行比较
比较结果如下图:
可以看出版本与版本之间代码的变化
这一块是进入版本内容查看时的可视化效果,右边的颜色条对应不同的意思,这个大家有兴趣可以自行学习,简单说几个重要的,黄色Add(添加进去的代码),橙色Remove(删除的代码),红色Conficted(冲突的代码)
四、版本回退 {#四、版本回退}
1.问题:update,update to reversion的区别?
update:低于最新版本的文件,更新至最新版本 例如:193562 -> 193566
update to reversion :更新至指定版本,可以往回更新,不可以commit 例如:193566 -> 193562
听上去很绕是不是?没关系,我用言简意赅的总结一下:
我们要弄清楚最新版本,本地版本,历史版本三个概念。本地版本 > 最新版本 > 历史版本,所以如果我们当前版本是低于最新版本的话,当其他成员还没有将他的本地版本commit的时候,你update会直接更新到最新版本,如果其他成员commit了,这个时候你update就更新到了其他的成员的本地版本。
update to reversion,更新至指定版本,这个比较好理解就不做解释了。弊端就是更新至指定版本之后,没有办法在commit了,也就是说更新后的这个版本是历史版本,是小于我们的最新版本的是无法提交的。所以就引出了我们下面的问题。
2.问题:revert、revert to reversion的区别?
revert:撤销在最新版本(193566)上的修改动作,回退至最新版本。
例如:本地版本 -> 193566
revert to revision(show log):回退至指定版本,可以往回更新,可以commit。
例如:193566 -> 本地版本(内容同193562)
总结一下:
revert
:简单来说就是本地版本可以回退到最新版本,事迹场景就是你加了很多代码,但是发现很多代码都是错的,你又不想找错误,你就可以回退到你刚开始更新过的最新版本。
revert to revision
:可以回退到指定版本,但底层操作是这样理解的。内容确实是回退到了历史的某个版本,但是实际却是最新版本之上的本地版本。有点绕昂,可以这样理解,就是把原先的历史版本作为我们的本地版本,这样的话本地版本 > 最新版本 就可以commit提交了。实际场景就是,我们中间更新迭代了很多版本,发现现在的项目没有以前某个版本好,想回退至某个历史版本,如果用update to reversion的话是没办法提交的,就可以用我们的revert to revision来解决。
五、SVN总结 {#五、SVN总结}
还是那句话,只要你update的够快,基本上就没什么问题
update:
-
修改文档前先update
-
出现conflicts及时解决
commit:
-
commit周期尽量短,减少conflicts的出现
-
commit的描述要详细,方便其他人查看
SVN的进阶知识今天就分享到这里了,有更好的方法欢迎大家和我讨论:)
参考链接:https://blog.csdn.net/Ljj9889/article/details/123269804