如何使用命令行SVN强制恢复特定版本号?

时间:2011-03-02 08:35:54

标签: svn trac svn-update

我在上一篇关于破坏事情的文章中说得太早了。

我正在尝试使用命令svn update -r 1124恢复到修订版 1124 ,但我不断收到如下错误消息:

[prague]$ svn update -r1024
U    app/webroot/css/group_themes/green.css
U    app/webroot/css/style.css
Skipped 'app/webroot/index.php'
svn: Failed to add directory 'app/webroot/images/users': an unversioned directory of the same name already exists

我们备份了一些东西,但仍然不是我知道我昨晚检查过的确切版本...我认为恢复到特定版本会更容易:(

3 个答案:

答案 0 :(得分:13)

不提交

尝试在新的空目录中签出修订版1124,这样就不会与现有目录发生冲突。

所以svn checkout -r 1124在新目录中。

提交

根据svn手册,如果你想提交以前的版本,你需要使用反向合并。请参阅http://svnbook.red-bean.com/en/1.0/ch04s04.html,'撤消更改'。

svn merge -c -1124 http://svn.example.com/repos/calc/trunk

svn commit -m "Rollback merge to revision 1124"

答案 1 :(得分:3)

  

无法添加目录'app / webroot / images / users':未版本控制的目录   已存在同名

对我来说很清楚:已经存在一个具有该名称的目录,并且它没有版本化。您可以选择两件事:删除目录并重新更新,或重命名(可能最聪明)并再次更新。

 $ mv app/webroot/images/users app/webroot/images/users.orig/
 $ svn update -r1024

顺便说一句,帮自己一个忙,看一下SVN的一些替代品,比如Mercurial,Bazaar或Git。我发现转换非常愉快;)

答案 2 :(得分:0)

您只需使用

更新修订版即可
svn up -r 1124 

但是这将不允许您提交更改,因为SVN需要您在提交之前将工作副本更新为HEAD。你可以做的是

svn merge -r HEAD:1124 yourFile
svn ci yourFile -m "Reverting back to rev 1124 "