要将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'
对于应该是一个相当常见的用例来说,似乎太麻烦了。我一定是做错了。你怎么能这样做?
答案 0 :(得分:89)
为什么不使用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 .
答案 1 :(得分:1)
您可以使用svn merge
执行此任务,有关示例,请参阅http://svnbook.red-bean.com/en/1.1/ch04s04.html#svn-ch-4-sect-4.2
答案 2 :(得分:1)
为什么不使用'svn merge'? 这就是原因:“然后手动解决任何冲突[...]”
如果我知道修订版268中的'文件夹'包含我想要继续使用的一致数据,为什么会自动创建一个包含可能不一致的数据的合并,以便稍后手动删除这些更改。它容易出错并且无法实现配置管理工具的目的。
即。我更喜欢原始要求中的配方并略有改进。如果您使用'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
答案 3 :(得分:0)
您也可以使用
svn revert folder/*
将还原folder