SVN:代码回滚问题与switch

简介:

第一种情况:当代码还未提交时


这种情况下,使用 svn revert 就能取消之前的修改。

# svn revert [-R] somefile

其中somefile可以是(目录或文件的)相对路径也可以是绝对路径。

当somefile为单个文件时,直接svn revert somefile就行了;

当somefile为目录时,需要加上参数-R(Recursive,递归),否则只会将somefile这个目录改动。

在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。

注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。


第二种情况:改动已经被提交


这种情况下,用svn merge命令来进行回滚,回滚的操作过程如下:
1、保证我们拿到的是最新代码:
svn update

假设最新版本号是28。 

2、然后找出要回滚的确切版本号:

svn log [somefile]

如果log很多,可以使用参数--limit

svn log --limit 10 [somefile]

假设根据svn log日志查出要回滚的版本号是25,此处的somefile可以是文件、目录或整个项目

如果想要更详细的了解情况,可以使用 

svn diff -r 28:25 [somefile]

3、回滚到版本号25:

svn merge -r 28:25 [somefile]
为了保险起见,再次确认回滚的结果:
svn diff [somefile]
发现正确无误,提交。
4、提交回滚:
svn commit -m "Revert revision from r28 to r25,because of ..."

提交后版本变成了29。


将以上操作总结为三条如下:
1. svn update,svn log,找到最新版本(latest revision)
2. 找到自己想要回滚的版本号(rollback revision)
3. 用svn merge来回滚: svn merge -r 28:25 somefile

注意:虽然 svn up -r 25 somefile 也可以使文件回滚,但是当提交时由于不是最新版本而无法提交,还需要先更新,拷贝,再提交,所以不建议使用。


补充:

svn忽略文件或文件夹

svn propset svn:ignore '*' template_c/


三、switch的理解

switch用于在同一个版本库内不同分支之间的切换
relocate用于版本库访问地址变更时,重新定位版本库

比如,由于SVN服务器更换到另一台主机上,这是SVN服务器的地址改变了,那么各客户端就无法连接SVN服务器了,这时各客户端就需要执行relocate,将本地工作区的连接到新的服务器上去

而如果同一个版本库内,如果有多个分支,比如你现在正在trunk上开发,但需要切换到某个分支上开发,那么你可以用switch来进行这个切换操作,这时SVN会比较trunk和这个分支之间的差异,将差异部分传送到你的本地工作区,而不用将整个分支传送给你,从而避免巨量数据的传输。switch操作之后,你所进行的update、commit操作都变成了针对那个分支,当你在分支上的工作完成后,还可以再次switch回trunk。 

switch还有另外一些用途,比如希望让分支中的某个文件夹保持和trunk同步,因为有人正在trunk的这个文件夹中进行开发,在分支中想用到开发的最新成果,那么就可以在分支的这个文件夹上设置swtich到trunk,这时update整个分支的话,就会把trunk上的这个文件夹取下来了。但是,当然你如果修改了这个文件夹的内容,commit后也是提交到了主干而不是提交到了分支。





















本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1300561,如需转载请自行联系原作者
相关文章
|
16天前
SVN 如何将分支代码合并回主干
SVN 如何将分支代码合并回主干
16 0
|
2月前
|
自然语言处理 Shell 网络安全
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
Liunx服务器搭建SVN服务,并通过钩子实现代码自动部署
32 3
|
8月前
|
Java Android开发
eclipse中向svn提交代码冲突的解决
eclipse中向svn提交代码冲突的解决
|
9月前
|
Android开发
Android 中使用SVN恢复原来的代码
Android 中使用SVN恢复原来的代码
54 0
|
9月前
|
Android开发
Android中使用Tortoise SVN遇到代码被锁定的解决办法
Android中使用Tortoise SVN遇到代码被锁定的解决办法
75 0
亲测解决,IDEA-SVN无法更新代码。
为什么SVN update不能更新别人提交的代码?
亲测解决,IDEA-SVN无法更新代码。
SVN回滚代码时,提示冲突怎么办
SVN回滚代码时,提示冲突怎么办
66 0
SVN回滚代码时,提示冲突怎么办
|
网络安全 数据安全/隐私保护 Windows
基于阿里云搭建svn代码管理系统
使用阿里云服务器搭建svn代码管理系统并集成便于小组开发
基于阿里云搭建svn代码管理系统
idea:svn不能同步代码问题修正
idea:svn不能同步代码问题修正
280 0
|
Shell 数据安全/隐私保护 Python
gitee+宝塔实现本地代码svn提交到仓库之后自动同步到web站点教程
gitee又叫码云是和github类似的国内代码托管平台,之所有选择码云也是因为它在国内速度比较快,地址:https://gitee.com/
463 0
gitee+宝塔实现本地代码svn提交到仓库之后自动同步到web站点教程