将svn文件夹还原到以前的版本
要将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
?
假设您想要从当前HEAD(上次提交)版本恢复到版本268:
cd folder svn up svn merge -r HEAD:268 .
然后手动解决任何冲突(如果没有本地更改,则不应有任何冲突),并且:
svn commit -m "- reverted to revision 268"
要恢复单个更改(例如在修订版666中进行):
cd folder svn merge -c -666 .
恢复本地更改(尚未提交):
cd folder svn revert -R .
您可以使用svn merge
执行此任务,请参阅http://svnbook.red-bean.com/en/1.1/ch04s04.html#svn-ch-4-sect-4.2
为什么不使用'svn merge'? 这就是为什么:“然后手动解决任何冲突[..]”
如果我知道修订版268中的“文件夹”包含我想继续使用的一致性数据,为什么会自动创build具有潜在不一致数据的合并,以便稍后手动删除这些更改。 这很容易出错,并破坏了我的configurationpipe理工具的用途。
也就是说,我更喜欢从原来的要求配方略有改善。 如果您使用'svn export'来获取旧版本,则不必删除.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/*
这将恢复文件folder
下的所有folder