从SVN仓库中删除更改,但保留在我的本地副本中?

3
我有几个文件是更新的一部分,但在准备好之前就错误地提交到了主干。是否有一种方式可以“撤消”此次检出并将存储库回滚一个版本,同时仍然保留更改后的文件在我的检出中?
我正在使用Windows XP上的tortiseSVN ver 1.6.5,如果有任何区别,请指出。
例如:我更新了一个文件,现在它的版本是659,该文件的上一个版本是600。我想保留版本659在我的检出中,但使当前版本600再次成为最新版本(即版本660)。
我尝试复制当前版本,将常规版本回滚到600,然后尝试将其提交回去,但它告诉我没有要提交的更改。
3个回答

3

通常我会将想要保留的文件复制到临时位置,执行回滚操作,然后将保存的文件复制回来...虽然我不知道是否采用了简单的方法,但可能有更好的选择。


2
你想要进行反向合并,而不是更新旧版本。
假设你刚提交的版本(想要回滚)是第42个版本。
# rollback
svn merge -c -42
svn commit
# now r43 is good but we want r42's version of foo.c in our working copy
svn merge -c -43 foo.c

-1
理想情况下,您应该使用“更新到修订版”,这将使您的工作副本恢复到指定的修订号,之后您可以提交回去。为了简单起见,在进行此操作之前,建议先复制当前的工作目录,然后在更新后将该副本移回原处。

这样做不行;在更新到旧版本后,您不能提交。您必须进行反向合并,否则SVN会说没有要提交的更改。更新到旧版本不算作更改。 - Michael Hackner
你说得对,迈克尔。我这边有点脑抽了。使用Tortoise进行此操作的详细信息在这里:http://www.coderenaissance.com/2008/11/how-to-revert-or-rollback-file-using.html - Troy Hunt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接