在寻找 SVN revert 命令解释时,我看到了以下解释:
此子命令不需要网络访问,并解决任何冲突状态。但是,它不会恢复已删除的目录。
我想知道,为什么它不需要网络访问,以及为什么它不恢复已删除的目录。
在寻找 SVN revert 命令解释时,我看到了以下解释:
此子命令不需要网络访问,并解决任何冲突状态。但是,它不会恢复已删除的目录。
我想知道,为什么它不需要网络访问,以及为什么它不恢复已删除的目录。
svn
将有关工作副本的信息保存在.svn
文件夹中,并使用它对工作副本执行一些管理任务,而无需访问存储库,即通过网络。如果您浏览这些目录,您会发现那里有一个本地数据库文件和一堆带有一堆文件的子目录.svn-base
。这些反映了您上次执行svn update
or时工作副本的状态svn checkout
。因此,如果您更改工作副本中的文件,svn
则可以根据相应的本地保存.svn-base
文件来区分差异,从而可以恢复更改。
不保存有关目录结构的信息。如果要还原目录上的更改,最简单的方法是svn update
从该目录的父目录执行 - 这显然需要存储库,因此需要网络连接。
您似乎正在阅读该问题的答案中发布的旧版 svn 客户端的帮助。
使用 1.7 版(至少,我无法确认此更改究竟来自哪个版本)及以上svn help revert
状态:
注意: 此子命令不需要网络访问,并解决任何冲突状态。
在对我的一个本地副本进行一些测试之后:
使用文件系统删除
Cmd-$> rd /Q /S <working copy>
或使用 svn 命令删除
Cmd-$> svn remove <working copy>
D <working copy>
D <working copy>\<file1>
D <working copy>\<file2>
使用命令
Cmd-$> svn revert -R .
在这两种情况下我都能恢复。
svn revert
不需要网络访问,因为每个工作副本都存储每个文件的“原始”副本,因为它是在上次更新时从存储库下载的。因此revert
,将该文件复制到您的工作副本中。
至于删除的目录,这可能不再是真的了。在 1.7 之前的版本中,每个目录都可以被视为一个独立的工作副本,因此它可能无法恢复这些,因为它没有原始副本。