将svn文件夹还原为以前的修订版

将svn文件夹还原为以前的修订版,svn,version-control,Svn,Version Control,要将SVN中的特定文件夹还原到其以前的状态,我当前使用以下方法: svn rm folder svn commit -m 'removed folder to revert to previous version' svn co http://pathto/repo/folder@268 cd folder rm -rf .svn //recursively if many folders svn add folder svn commit -am 'reverted to the previo

要将SVN中的特定文件夹还原到其以前的状态,我当前使用以下方法:

svn rm folder
svn commit -m 'removed folder to revert to previous version'
svn co http://pathto/repo/folder@268
cd folder
rm -rf .svn //recursively if many folders
svn add folder
svn commit -am 'reverted to the previous version'

对于一个相当常见的用例来说,似乎太麻烦了。我一定做错了。您还可以如何执行此任务?

您可以使用
svn merge
执行此任务,请参见示例为什么不使用
svn merge

假设您希望从当前HEAD(上次提交)版本恢复到修订版268:

cd folder
svn up
svn merge -r HEAD:268 .
然后手动解决任何冲突(如果没有本地更改,则不应有任何冲突),并且:

要恢复单个更改(例如,在第666版中进行的更改):

要还原本地更改(尚未提交),请执行以下操作:

为什么不使用“svn合并”? 这就是为什么:“然后手动解决任何冲突[…]”

如果我知道268版的“文件夹”包含我想继续使用的一致数据,为什么要自动创建一个包含潜在不一致数据的合并,而只是在以后手动删除这些更改呢。它很容易出错,并且违背了配置管理工具的目的

也就是说,我更喜欢原始要求的配方,稍加改进。如果使用“svn导出”获取旧版本,则不必删除.svn文件:

svn rm folder
svn commit -m 'removed folder to revert to previous version' .
svn export -r 268 http://pathto/repo/folder
svn add folder
svn commit -m 'reverted to the previous version' folder
你也可以使用

svn revert folder/*

这将还原
文件夹下的所有文件

谢谢你,Jacek完全保存了我的hamhocks。我认为上面的
svn提交
行中缺少了
-m
。i、 e.它应该是
svn commit-m”-恢复为修订版268“
。我无法编辑,因为它少于我限制的6个字符!您将要还原文件夹中的文件。。。不再需要此文件夹中任何未提交的更改,因此在使用“合并”之前,可以使用“还原”。那就不会有任何冲突了…谢谢。接受的解决方案对我不起作用(我有一个特殊情况,我需要将“意外恢复到早期版本的文件夹”再次恢复到“较新的”版本),但你的解决方案起作用了。我必须更改svn导出-r 268http://pathto/repo/folder至
svn导出http://pathto/repo/folder@268
,但是。不幸的是,自svn 1.7以来,此过程将不起作用,因为在此版本和下一版本中,只有一个全局.svn目录。来自“svn帮助还原”:。。。此子命令不会还原已提交的更改。。。
cd folder
svn revert -R .
svn rm folder
svn commit -m 'removed folder to revert to previous version' .
svn export -r 268 http://pathto/repo/folder
svn add folder
svn commit -m 'reverted to the previous version' folder
svn revert folder/*