SVN提交前撤消删除

SVN提交前撤消删除,svn,directory,undo,delete-directory,Svn,Directory,Undo,Delete Directory,如果您从一个SVN工作副本中删除了一个目录,但还没有提交,那么如何取回它并不明显。谷歌甚至建议在键入“svn undo d”时,将“svn undo delete before commit”作为一个常见的查询,但搜索结果没有任何帮助 编辑:我想要一个在subversion 1.4.4中工作的解决方案我能找到的最简单的解决方案是从工作副本中删除父目录(使用rm-rf,而不是svn delete),然后在祖父母中运行svn update。例如,如果您删除了a/b/c、rm-rf a/b、cd a、

如果您从一个SVN工作副本中删除了一个目录,但还没有提交,那么如何取回它并不明显。谷歌甚至建议在键入“svn undo d”时,将“svn undo delete before commit”作为一个常见的查询,但搜索结果没有任何帮助


编辑:我想要一个在subversion 1.4.4中工作的解决方案我能找到的最简单的解决方案是从工作副本中删除父目录(使用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更新删除目录

相反。

1)做

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某些目录


svn更新一些\u dir\u parent

,假设父目录中没有具有挂起更改的子目录。是否存在与您删除的具有挂起更改的子目录相同的同级目录?如果是这样的话,在从更高级别还原时要小心,您可能会丢失更改。这将删除超过必要数量的更改。这对Subversion 1.4.4不起作用(我刚刚尝试过)。svn help revert甚至说“此子命令不需要网络访问,并解决任何冲突状态。但是,它不还原删除的目录。”很抱歉,我应该指定版本。1.4.4是Mac OS X 10.5附带的。这必须是新的,它在SVN 1.4.4中不起作用。(这是我尝试的第一件事。)这是1.4.4所说的,顺便说一句:$svn help revert:Restore pristine working copy file(撤消大多数本地编辑)。用法:还原路径。。。注意:此子命令不需要网络访问,并解决任何冲突状态。但是,它不会还原删除的目录。1.6.6在帮助中有相同的文本,但在我测试它时它对我有效。请注意,如果您没有使用
svn delete
来删除目录,而是使用
rmdir
将其删除,则需要使用
svn update deletedDirectory
来替代。我已从本地svn-ed目录中删除了一个文件(svn del)。svn更新不起作用,但svn恢复起作用。我在为Mac使用SynchronSVN。不过,谢谢你的提示。根据链接,使用svn-R revert来取消删除整个目录的所有内容,这可能是你想要的。没有-R的svn恢复只是恢复目录,而不是内容。这是最准确的答案,非常感谢,你帮了我很多。除了恢复所有内容之外?您可能不想这样做。如果您有一个SVN认为已删除的整个文件夹,则这是最有意义的。我在检查一份工作副本时有过这种感觉。已存在一个文件夹,因此该文件夹存在冲突,未签出。它是指向另一个文件夹的链接。我重新命名了它,并尝试
svn up
让它签出,意识到了冲突,并且
svn解决了foo
svn status
告诉我,我有大约10k个文件标记为
D
svn up
svn revert
没有将它们取回,但这解决了问题。
--recursive
的+1有助于恢复已删除目录的内容。哦,我的上帝,你救了我的命!这对我(svn 1.7.10)非常有用,因为svn revert deletedDir没有完成这项工作。回答得很好。我可以创建名称中带有空格的目录。它可能会突然断开。
svn revert --depth infinity deletedDir