2011-11-28 128 views
11

我想查看(而不是修改)我的存储库中几个文件的旧版本,所以我去了并恢复了这些文件。现在我试图将这些文件恢复到最新版本,以便它们与我的工作副本中的所有其他文件相匹配,但是当我更新文件夹时,没有任何更改。TortoiseSVN - 撤销还原

是否可以撤消恢复?我将这些文件的最新版本复制并粘贴到其他地方,因此它们并没有完全丢失,但我认为有一种比将这些文件移回到保存我的工作副本的目录更简单的方法。

在此先感谢。

+0

见详细的解答和程序在这里:http://stackoverflow.com/questions/1554278/temporarily-put-away-uncommited-changes-in-subversion-a-la-git-stash –

回答

9

我猜你使用了恢复到这个版本上下文菜单中的显示日志对话。尽管有这个名字,但它并没有真正执行回复操作,至少在Subversion理解这个术语的方式上并非如此。它实际上做的是将修订更改反向合并到您的工作副本中。所以现在你的工作副本中有未保存的更改,Subversion在更新时会尝试保留它们。您可以从“检查修改”对话框中验证:这些项目应显示为“已修改”。

如果是这种情况,您可以通过以下方式丢弃本地更改:工作副本中的“还原”上下文菜单。这一次,它会做一个真正的“恢复”操作。

下次要检查目录树的旧版本时,可以使用日志对话框中的“更新项目到修订”上下文菜单。它会做SVN更新,可以很容易地撤消。

+0

是的,这就是我所做的;我没有意识到术语不同。我按照你的指示,我把我最近的文件放回到我的工作目录中。感谢您的帮助!虽然我不太清楚“反向合并”的含义。你能解释一下这是什么意思吗? – Emily

+0

[合并](http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.branchmerge.basicmerging)是将对一个分支所做更改复制到另一个分支的操作​​。当您不应用更改以获取该功能,而是将其相反(删除该功能)时,它是*反向*。 –

+0

对不起,但“恢复到此修订版”确实会进行反向合并。然而,“此修订更新”不会。 – Stefan

0

否。还原丢弃您的本地更改,该存储库从来没有听说过,所以无法从那里恢复它们。 TortoiseSVN可能会在客户端为你保留备份,但不会。

请注意,这只意味着您永远不会返回未提交的本地修改,Update命令仍应该从存储库获取最新版本,而不是您之前明确检出的任何旧版本。

+0

谢谢为了您的回应。当我恢复这些文件时,我实际上没有进行任何本地更改。假设我的文件夹版本为100(这是版本库中的最新版本),并且我将一些文件恢复为版本50.因此,现在我要将我的工作副本中的这些文件恢复到版本100(除非我误解这些文件的版本100仍然位于存储库中)。在这个过程中我没有做任何事情。有没有办法回到这些文件的版本100,因为我早先将它们恢复到版本50? – Emily

+0

好吧,在SVN术语中,您没有“回复”,您使用TortoiseSVN - > Update to revision ...对话框“更新”(是的,与日常使用不完全相同)到特定修订版本号。 – themel

+0

是的,我没有意识到SVN术语和TortoiseSVN术语有点不同。我为每个文件做的事情是TortoiseSVN - > Show Log - >恢复到这个版本,正如Alvaro G. Vicario在另一个答案中所述。感谢您的帮助! – Emily

2

在SVN中,只有本地机器上的工作副本和服务器上的存储库。通过使用还原您已将本地工作副本的内容替换为来自服务器的内容,并且没有其他地方SVN保留这些文件的副本。

根据您的IDE,您可能能够恢复您的更改。例如,Eclipse会跟踪工作区中每个文件的本地历史记录。

但是,如果您想获得更灵活的版本控制,请参阅GitMercurial

+0

提到这个Eclipse功能只是让我从一大堆返工中救了我一命! – leokhorn

7

按Ctrl + Z在项目目录中,如果你没有重新启动您的计算机

+0

这个帮了我。该项目是在Visual Studio中打开的,所以我可以选择性地撤消恢复! –

+0

从来不知道这是可能的。为我节省了很多时间。谢谢! –

0

要撤消还原:
1.右键单击 - >TortoiseSVN的 - >恢复
2.右键单击 - >SVN更新