很抱歉,仅重申先前给出的答案就用了一些空间-但这总是给我带来麻烦。
假设我已经将本地文件更新为最新版本,即854。然后,我想获得一个较旧的版本-较早版本的文件版本,例如851。
复制将起作用:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
..但是,我不能为repo URL烦恼grepping :)
更新似乎可以工作:
svn up -r 851 ./l3toks.dtx
...但是,它也将本地副本标记为“新签出”,或者说是“与在线修订版本相同”(例如,在Tortoise / RabbitVCS中,您将获得绿色的OK复选标记)-这意味着您不能这样做svn ci -m "rolled back to r 851"
:仅因为本地subversion
可执行文件不会注意到任何本地更改,也不会费心将任何内容上传到在线存储库。
而且,正如已经回答的那样,反向合并是可行的-但是在这种情况下,不应该依赖快捷方式语法;但具体说明:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
我必须承认-我永远都不会理解“ 将r854到r852反向合并到文件中 ”的意思是“ 刚得到文件的r851,并覆盖了您以前在本地的任何内容-它被标记为与最新的在线修订版本不同,所以您可以将其作为新的“回滚”修订版本重新在线查看, “但是我想(并且希望:))就是它的作用:)
此后,svn diff
如果我们在本地获得了正确的修订,就可以快速确定。而且,该文件将在Tortoise / RabbitVCS中标记为红色感叹号(即与最新提交的版本不同),因此svn ci -m "rolled back to r 851"
可以运行该时间。
另外,请注意,如果您最终在反向合并后改变了主意(即,无论如何,您仍要继续处理最新的HEAD版本,此处为854-在本地回滚到851,但尚未提交回滚之后),您不应该使用svn up
,因为它只会说它已经是“ At854修订版 ”;使用代替svn revert --recursive .
或类似的...
干杯!
参考:如何使用Subversion回滚更改-Jacob Wright-Flex,AIR,PHP等
编辑:...显然,效果与 svn merge -r HEAD:851 l3toks.dtx
,可以通过以下方法实现与:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.