如果您从 SVN 工作副本中删除了一个目录,但尚未提交,那么如何取回它并不明显。当您键入“svn undo d”时,Google 甚至建议将“svn undo delete before commit”作为常见查询,但搜索结果无济于事。
编辑:我想要一个适用于颠覆 1.4.4 的解决方案
如果您从 SVN 工作副本中删除了一个目录,但尚未提交,那么如何取回它并不明显。当您键入“svn undo d”时,Google 甚至建议将“svn undo delete before commit”作为常见查询,但搜索结果无济于事。
编辑:我想要一个适用于颠覆 1.4.4 的解决方案
1)做
svn revert . --recursive
2)解析输出错误,如
"Failed to revert 'dir1/dir2' -- try updating instead."
3)为每个错误目录调用svn:
svn up dir1/dir2
svn revert deletedDirectory
这是命令的文档svn revert
。
如果使用and notdeletedDirectory
被删除,你需要做rmdir
svn rm
svn update deletedDirectory
反而。
对我有用的是
svn revert --depth infinity deletedDir
从您删除的目录的上一级执行(递归)还原操作。
要将其制成一个衬里,您可以尝试以下操作:
svn status | cut -d ' ' -f 8 | xargs svn revert
我能找到的最简单的解决方案是从工作副本中删除父目录(使用 rm -rf,而不是 svn delete),然后在祖父母中运行 svn update。例如,如果你删除了 a/b/c, rm -rf a/b, cd a, svn up。这让一切都回来了。当然,如果您想要保留的父目录中没有其他未提交的更改,这只是一个很好的解决方案。
希望下次我用谷歌搜索这个问题时,这个页面会出现在结果的顶部。当然,如果有人建议一种更清洁的方法,那就更好了。
您可以在提交之前删除文件夹并更新父目录:
rm -r some_dir
svn update some_dir_parent