svn回滚版本1

我刚开始使用SubVersion时, 想把svn代码库回滚到以前某个版本,  上网找来找去都找不到(那时文档比较少), 让我郁闷了好一阵子.  现在记录一下 SubVersion回滚的方法:

第一种方法: 使用TortoiseSVN进行回滚. 很明显, 这种方法只适用于windows平台. 以下摘自 TortoiseSVN文档:

B.4. 回滚版本库里的版本 
B.4.1. 使用版本日志对话框 
如果想恢复某个版本或者版本范围的变更,最简单的方法是使用版本日志对话框。这种方法也可以用来撤销最近的若干次变更,把以前的某个版本变成最新版。

1.选中想要恢复变更的文件或者文件夹。如果想要恢复所有的变更,需要选中最顶层的文件夹。

2.选择TortoiseSVN → 显示日志,显示出版本列表。有可能需要使用全部显示或者下100 按钮,把想要恢复的版本显示出来。

3.选中想要恢复的版本。如果想要恢复一个版本范围,选中想要恢复的第一个版本,按住shift键,然后选中想要恢复的最后一个版本。注意,当恢复多个版本的时候,这些版本必须在列表中是连续的。用鼠标右键点击选中的版本(段),然后选择右键菜单 → 恢复这些版本的变更。

4.如果想要把以前的某个版本变成最新版本,右键点击选中的版本(范围),然后选择右键菜单 → 恢复到此版本。就能够撤销被选中版本后面所有的变更。

工作拷贝已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。

B.4.2. 使用合并对话框 
如果要撤销更大版本范围的变更,可以使用合并对话框。上一个方法在后台使用了合并的机制,在这个方法里我们直接使用合并功能。

1.在工作拷贝上选择TortoiseSVN → 合并。

2.在起始:文本框里输入想要恢复的变更所在的分支或标签的URL。它也将作为默认URL。

3.在起始版本文本框里输入当前工作拷贝的版本号。如果能够保证没有其他人会提交变更,可以使用最新版本。

4.确认使用“起始:”的 URL检查框处于被选中的状态。

5.在结束版本里输入想要恢复到的版本号。比如,想要恢复的最小版本号的前一个版本号。

6.点击合并按钮完成合并。

工作拷贝已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。

B.4.3. 使用svndumpfilter 
因为TortoiseSVN绝不会丢弃数据,所以那些被回滚的版本仍然以中间版本的形式被保留在版本库里。只是最新版本已经回到了以前的状态。如果想让版本库里的某些版本彻底消失,擦去这些版本曾经存在过的所有痕迹,就必须采取更极端的手段。不推荐使用这种方法,除非有很好的理由。比如某人向一个公开的版本库里提交了一份机密文件。

从版本库里删除数据的唯一方法就是使用svnadmin这个Subversion命令行工具。具体如何实现请参考Subversion手册。

第二种方法: 使用SubVersion自带的svn merge 命令. 这种方法适用于任何能使用SubVersion的平台. 以下摘自 <使用SubVersion进行版本控制> 4.4.2节:

svn merge另一个常用的做法是取消已经做得提交,假设你愉快的在/calc/trunk工作,你发现303版本对integer.c的修改完全错了,它不应该被提交,你可以使用svn merge来“取消”这个工作拷贝上所作的操作,然后提交本地修改到版本库,你要做得只是指定一个相反的区别:

$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk U integer.c $ svn status M integer.c $ svn diff … # verify that the change is removed … $ svn commit -m "Undoing change committed in r303." Sending integer.c Transmitting file data . Committed revision 350. 
我们可以把版本库修订版本想象成一组修改(一些版本控制系统叫做修改集),通过-r选项,你可以告诉svn merge来应用修改集或是一个修改集范围到你的工作拷贝,在我们的情况例子里,我们使用svn merge合并修改集#303到工作拷贝。

记住回滚修改和任何一个svn merge命令都一样,所以你应该使用svn status或是svn diff来确定你的工作处于期望的状态中,然后使用svn commit来提交,提交之后,这个特定修改集不会反映到HEAD版本了。

继续,你也许会想:好吧,这不是真的取消提交吧!是吧?版本303还依然存在着修改,如果任何人取出calc的303-349版本,他还会得到错误的修改,对吧?

是的,这是对的。当我们说“删除”一个修改时,我们只是说从HEAD删除,原始的修改还保存在版本库历史中,在多数情况下,这是足够好的。大多数人只是对追踪HEAD版本感兴趣,在一些特定情况下,你也许希望毁掉所有提交的证据(或许某个人提交了一个秘密文件),这不是很容易的,因为Subversion设计用来不丢失任何信息,每个修订版本都是不可变的目录树 ,从历史删除一个版本会导致多米诺效应,会在后面的版本导致混乱甚至会影响所有的工作拷贝。 [9]

解释一下,  svn merge -r 303:302 http://svn.example.com/repos/calc/trunk 这个命令是把当前目录当作工作拷贝.  如果想指定工作拷贝路径(如: c:/test), 则命令变成以下:

svn merge -r 303:302 http://svn.example.com/repos/calc/trunk  c:/test

转载之 http://blog.csdn.net/riag/article/details/1630819

时间: 2024-11-09 04:40:04

svn回滚版本1的相关文章

svn回滚版本

1.本地修改了内容,但是没有commit可以通过Revert-来覆盖当前版本. 2.已经commit了.首先第一步,应该知道需要回滚的版本编号, 第二步,选择 updata to revision svn回滚版本,布布扣,bubuko.com

Linux svn 回滚版本库

Linux代码   svn up Index/ 然后找出要撤销的确切版本: Linux代码   svn log --limit 10 Index/tpl/css/global.css 根据log怀疑是16976版本改坏的,比较一下: Linux代码   svn diff -r 16975:16976  Index/tpl/css/global.css 发现16976有错误 撤销16976版本的改动: Linux代码   svn merge -r 16976:16975  Index/tpl/cs

svn回滚版本2

svn 版本回滚 取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn revert [-R] something 其中something可以是(目录或文件的)相对路径也可以是绝对路径. 当something为单个文件时,直接svn revert something就行了:当something为目录时,需要加上参数-R(Recursive,递归),否则只会将somethi

SVN回滚机制

引子 工作中遇到一个新同事提交代码时不知怎么的出现了大面积的代码覆盖,由于对SVN也不是特别了解,就看着别人处理问题,自己也验证性的实践了一下,总结一下. 总结 svn每一次提交成功,都会有一个`编号纪录`,例如第二次提交为 2,第三次提交为3,可以点击第二次纪录进行回滚,这个回滚的意思是:1)撤销第二次所作的修改,相当于回到第一次提交之后的状态,且`只影响第二次提交时涉及的内容`,如果只提交了一个名字为a的文件,那么只影响该文件:2) 所有第二次之后提交的状态将会保持.不管第二次之后的提交是修

通过svn回滚指定版本

右击文件(也可以是文件夹),TortoiseSVN – show log,右击你想要回滚到的版本. “Revert to this revision”,这个比较好理解,也比较常用.就是把文件恢复到某个版本,然后commit,文件就回滚成功了.回滚成功后,所有的历史还存在.例如回滚到版本4,commit之后,会出现新的版本6,但是他的内容和版本4是一样的 原文地址:https://www.cnblogs.com/ynyhl/p/12169796.html

Git 回滚版本

git 撤销本地提交 情形1:只撤销commit,但是不想将commit下的代码撤销 撤销上一次的commit (commitId 可以通过 git reflog 进行查看,下面所有的HEAD~x 都可以换成相应的commitId) git reset HEAD~ 或者 git reset HEAD~1 或者 get reset commitId 如果提交了多个commit,那么可以通过修改HEAD~后的数字,如撤销前3次的commit git reset HEAD~3 情境2:撤销commit

如何使用git回滚版本到分支中的某一个commit时间点

git reset [commit 哈希值] 但是这样做只能把本地分支回滚到该commit上,远程分支还在原来的地方. 可以这样操作:在你想要回滚的commit上另外建一个新分支,然后git checkout [该分支],然后把原来的分支删除掉,git branch -d [老分支]可以删除本地的老分支,同样,远程分支还是老状态,可以git push origin :[老分支],把远程的老分支删除,这样你需要回滚的commit之后的信息在本地和远程都彻底消灭了(慎重,确保你真的不要这些信息了哦)

tortoise svn回滚常用命令

一.revert to this version 和 revert changes from this version的区别 假设SVN已有版本4814-4854:1.基于4837版本执行[revert to this version]操作,则仅将4837版本的修改消除,但不会影响其他版本.2.基于4837版本执行[revert changes from this version]操作,则会将4837-4854版本的修改全部消除. 二.update to revision和revert to r

OS X环境下SVN回滚工程到指定版本,回滚指定文件到指定版本

1.打开命令行终端 2.cd + 工程或文件目录 3.svn update 工程目录或文件目录 -r 版本号 在Xcode中选中文件,右键选择''show in finder''(也可以用快捷键,不过要自己添加呦Xcode->Preferences->Key Bindings,哥用的是command+9),该文件就会在Finder中打开 然后直接把文件拖到终端中,文件路径就被添加进命令行终端了,运行以上的命令,就可以更新到自己想要的版本了- 告诉你一个SVN的小技巧 使用过SVN的同学都知道更