使用TortoiseSVN回退到先前的版本

65

如何使用Windows TortoiseSVN将我的工作副本还原到以前的版本是最简单的方法?

我没有找到任何快速执行此操作的“可查找”命令。

6个回答

130
有几种方法可以实现。但是不要像这里建议的那样只更新到较早的版本。
撤销来自单个版本或一系列版本的更改最简单的方法是使用修订日志对话框。如果您想放弃最近的更改并使较早的版本成为新的HEAD,则也应该使用此方法。
  1. 选择需要恢复更改的文件或文件夹。如果要还原所有更改,则应选择顶级文件夹。
  2. 选择TortoiseSVN→显示日志以显示修订版本列表。您可能需要使用“显示全部”或“下一个100”来显示您感兴趣的修订版本。
  3. 选择要还原的修订版本。如果要撤消一系列版本,则选择第一个版本并在选择最后一个版本时按住Shift键。请注意,对于多个版本,范围必须是连续的,没有间隙。右键单击所选修订版本,然后选择“上下文菜单” → “从此版本还原”更改。
  4. 或者,如果您想将较早的版本作为新的HEAD版本,则右键单击所选版本,然后选择“上下文菜单” → “还原到此版本”。这将放弃所选版本之后的所有更改。
您已经恢复了工作副本中的更改。检查结果,然后提交更改。
所有解决方案都在TortoiseSVN文档的“我该如何...”部分中解释。

1
那么,如果我执行了上述步骤,我就无法获取在还原版本之后创建的其他修订版本了吗?还原版本之后创建的修订版本会被删除吗?我不想失去任何东西,我想切换回一个特定的修订版本。怎么做呢?谢谢。 - sun
我想我找到了。我需要执行“更新到修订版”。我是对的吗? - sun
7
不!不要使用“更新到修订版”的选项。请仔细阅读我回答的第一行。 - Stefan
好的,我明白了。我需要回滚而不是“更新到版本”,因为它不允许我提交新版本。我从@Vincent B的评论中得到了这个想法。我按照你的步骤走,但仍然遇到了第三步。现在我可以提交新版本了。你能给我一个参考来找到基础知识吗?谢谢。 - sun
我只是在尝试理解措辞的语义。举个例子,假设我已经检入了版本2和版本3,然后决定要撤销版本3。 当您说“选择要还原的版本”时,我应该选择版本2还是版本3?我的历史记录日志在右键单击文件时给我两个不同的选项 - “还原到”和“从还原”。这很令人困惑,因为“还原”文件可能意味着上一个版本的最新修订,具体取决于上下文。 那么我应该选择哪个文件,选择哪个选项呢? - James
显示剩余3条评论

10

我使用了与 Stefan 相同的指令,这些指令取自Tortoise网站

但是一定要在点击提交后立即进行提交。我一直很困惑,直到意识到这一点。

如果您需要将较旧的修订版设置为您的主要修订版,请执行以下操作:

  1. 选择要还原更改的文件或文件夹。 如果您想撤消所有更改,则应选择顶级文件夹。

  2. 选择TortoiseSVN→显示日志以显示修订版列表。 您可能需要使用“显示所有”或“下一个100”来显示您感兴趣的修订版。

  3. 右键单击所选修订版,然后选择上下文菜单→恢复到此修订版。 这将丢弃所选修订版之后的所有更改。

  4. 提交更改。


5
右键点击处于SVN控制下的文件夹,选择 → 。记录您想要还原到的版本号,然后选择 → 。

4
可以肯定地说,您可以在日志中右键单击修订版本,然后选择“更新到此修订版本”。 - Blorgbeard
是的,你可以这样做,但我只想展示其中一种方法。有几种不同的方式。 - Rafael Colucci
15
更新到修订版本后,您无法提交更改。由于您的工作副本版本与要还原的版本相同,因此一旦更新,您将无法提交更改。您需要使用“还原到修订版本”来完成@Ricardo Alamino想要做的操作。 - Vincent B.

1

在上下文菜单中,还原命令会忽略您的编辑并将工作副本返回到先前的状态。 当您从存储库“CheckOut”时,您还可以选择除“Head”之外的所需修订版本。


1
这里有另一种非正统但有效的方法*。
最近我发现自己处于这样一种情况:我已经提交了破坏性代码,知道在所有集成工作完成之前无法将其更新到我们的生产代码中(回想起来这是一个错误的决定,但我们没有预料到会被卡住,但其他项目优先)。那是几个月前的事了,整合工作一直停滞不前。突然出现了一个要求更改基础代码并在上周将其投入生产而不带有破坏性变化的需求。
这是我们所做的:
在确认新要求在使用我的提交之前的版本时不会出现任何问题后,我复制了包含新代码的工作目录。然后我删除了工作目录中的所有内容,并将所需版本检出到其中。然后我删除了刚刚检出的所有文件,并将工作副本中的文件复制进去。然后我提交了这个改变,有效地从存储库中清除了破坏性变化,并将生产代码放置为头部版本。我们仍然可以使用破坏性变化,但它不再是头部版本,因此我们可以向生产前进。
*我不推荐这种方法,但如果你发现自己处于类似的情况中,这是一个不太痛苦的出路。

-1
在TortoiseSVN上下文菜单中,选择“更新到修订版”,输入所需的修订版号码,然后就完成了。 :)

不应该这样做。如果你想撤销用户的编辑,使用“还原”。 - Eric Eijkelenboom
10
更新到旧版本会使您的工作副本指向旧版本。从您尝试提交时起,它将抱怨您的工作副本已过期。 - Filip De Vos

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