提交前撤消删除

如果您从 SVN 工作副本中删除了一个目录,但是还没有提交,那么不清楚如何返回该目录。Google 甚至建议,当你输入“ svn undo d”时,“ svn undo delete before commit”是一个常见的查询语句,但是搜索结果没有帮助。

我想要一个在 subversion 1.4.4中工作的解决方案

125698 次浏览

我能找到的最简单的解决方案是从工作副本中删除父目录(使用 rm-rf,而不是 svn delete) ,然后在祖父目录中运行 svn update。例如,如果你删除了 a/b/c,rm-rf a/b,cd a,svn up。一切又回来了。当然,只有在父目录中没有其他未提交的更改需要保留的情况下,这才是一个好的解决方案。

希望下次我搜索这个问题的时候,这个页面会出现在搜索结果的顶部。当然,如果有人提出一种更干净的方法,那就更好了。

从已删除目录的上一级执行(递归)“恢复”操作。

svn revert deletedDirectory

下面是 svn revert命令的文档


剪辑

如果使用 rmdir而不是 svn rm删除了 deletedDirectory,那么您需要这样做

svn update deletedDirectory

取而代之。

1)做

svn revert . --recursive

2)解析输出错误,例如

"Failed to revert 'dir1/dir2' -- try updating instead."

3)为每个错误目录调用 svn:

svn up dir1/dir2

为了使它成为一行,你可以尝试这样的东西:

svn status | cut -d ' ' -f 8 | xargs svn revert

对我有用的是

svn revert --depth infinity deletedDir

在提交之前,您可以删除该文件夹并更新父目录:

rm -r some_dir

svn update some_dir_parent