如何从SVN仓库中恢复已删除的文件

6

我不小心在Tortoise-SVN版本库浏览器中删除了一个重要的文件夹。

工作文件夹没有受到影响。

那么,推荐的恢复方式是什么呢?
我只需要还原到以前的版本吗? 还是需要将以前的版本检出到一个新文件夹中,然后删除旧文件夹?


可能是什么是在Subversion中恢复文件的简单方法?的重复问题。 - gbjbaanb
8个回答

8
  1. 将您的工作副本更新到最新版本
  2. 将之前的版本检出到一个新文件夹中
  3. 从之前版本的文件夹中使用SVN复制被删除的文件夹到最新版本的文件夹中
  4. 在最新版本的文件夹中添加文件
  5. 提交最新版本的文件夹到SVN仓库中

2
这不是推荐的方法。使用copy @REV可以跟踪文件来源。仅在文件系统中手动复制文件会破坏历史记录。 - Dan McGrath
1
如果您使用“SVN Copy”,它将正确记录所复制版本的修订记录。我刚刚根据上述描述进行了测试,现在TortoiseSvn中的日志显示该目录是从修订版1(存在于哪里)复制的。 - Lasse V. Karlsen

5

由于您提到正在使用TortoiseSVN:

在工作目录上执行TortoiseSVN | Show Log。 右键单击删除文件夹的提交记录。 选择从此版本恢复更改。

这将重新创建工作文件夹中缺失的文件。然后,您可以还原任何其他实际想要保留的该版本中的更改。一旦您的工作文件夹处于所需状态,就可以提交。

我不确定这种方法是否保留了历史记录。


它似乎保留了历史记录。 - Johnny

1

您可以从删除之前的版本中复制并将其添加回存储库。

在svn中没有真正的“撤消删除”选项。


0

针对命令行爱好者:

  • 首先找到删除发生的版本号:

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

假设你发现在第999个版本中目录被删除了 (顺便说一句:你可能会发现使用 SVN 仓库浏览器更容易找到版本号)

  • 复制从版本减1的文件夹

    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    

完成了,大功告成!


0
  1. 将最新版本的代码库检出到一个新目录。
  2. 使用Tortoise将其合并到你删除之前的版本。
  3. 提交合并的结果。

更多信息请参见Subversion书籍


0

0

你尝试过TortoiseSVN文档吗?

这被描述为回滚修订版本

发生的情况是,您回滚删除操作,因此以前的版本(在您执行删除操作之前的版本)成为新的HEAD修订版本。删除操作仍将出现在日志中,但它还描述了如何挽救您的尴尬(虽然更复杂):)


0
  1. 在仓库浏览器中将焦点切换到仍然包含已删除的项目/文件夹的修订版本
  2. 右键单击项目/文件夹,选择“复制到”
  3. 你会得到将其复制到自身的建议,但现在它将位于HEAD修订版本中
  4. 在查看“显示日志”时,请确保取消选择“停止复制”,以查看较旧的提交注释

享受吧!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接