140

如果您从 SVN 工作副本中删除了一个目录,但尚未提交,那么如何取回它并不明显。当您键入“svn undo d”时,Google 甚至建议将“svn undo delete before commit”作为常见查询,但搜索结果无济于事。

编辑:我想要一个适用于颠覆 1.4.4 的解决方案

4

7 回答 7

158

1)做

svn revert . --recursive

2)解析输出错误,如

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

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

svn up dir1/dir2
于 2010-09-15T12:43:59.357 回答
147

svn revert deletedDirectory

这是命令的文档svn revert


编辑

如果使用and notdeletedDirectory被删除,你需要做rmdirsvn rm

svn update deletedDirectory

反而。

于 2009-11-24T14:04:53.450 回答
32

对我有用的是

svn revert --depth infinity deletedDir
于 2014-03-12T18:54:47.623 回答
4

从您删除的目录的上一级执行(递归)还原操作。

于 2009-11-23T23:08:31.697 回答
4

要将其制成一个衬里,您可以尝试以下操作:

svn status | cut -d ' ' -f 8 | xargs svn revert
于 2013-07-25T15:56:53.797 回答
1

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

希望下次我用谷歌搜索这个问题时,这个页面会出现在结果的顶部。当然,如果有人建议一种更清洁的方法,那就更好了。

于 2009-11-23T23:08:08.233 回答
0

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

rm -r some_dir

svn update some_dir_parent

于 2017-07-12T13:33:45.493 回答