使用 TortoiseSVN 恢复到以前的版本

Posted

技术标签:

【中文标题】使用 TortoiseSVN 恢复到以前的版本【英文标题】:Reverting to a previous revision using TortoiseSVN 【发布时间】:2011-07-27 02:40:15 【问题描述】:

使用 Windows TortoiseSVN 将我的工作副本恢复到以前版本的最简单方法是什么?

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

【问题讨论】:

【参考方案1】:

有几种方法可以做到这一点。 但不要只是按照此处的建议更新到较早的版本

从单个修订版或一系列修订版还原更改的最简单方法是使用修订日志对话框。这也是您想要放弃最近的更改并将较早的修订版作为新 HEAD 的方法。

    选择您需要还原更改的文件或文件夹。如果您想还原所有更改,这应该是***文件夹。 选择 TortoiseSVN → 显示日志以显示修订列表。您可能需要使用Show AllNext 100 来显示您感兴趣的修订版本。 选择您要恢复的版本。如果要撤消一系列修订,请选择第一个并在选择最后一个时按住 Shift。请注意,对于多个修订,范围必须是完整的,没有间隙。右键单击选定的修订版,然后选择 Context MenuRevert 从此修订版更改。 或者,如果您想将较早的修订版设为新的 HEAD 修订版,请右键单击选定的修订版,然后选择 Context MenuRevert to this revision。这将放弃选定修订后的所有更改。

您已恢复工作副本中的更改。检查结果,然后提交更改。

所有解决方案都在“How Do I..”中进行了说明。 TortoiseSVN 文档的一部分。

【讨论】:

因此,如果我执行上述步骤,我无法获得在我恢复的修订后创建的其他修订?还原修订后创建的修订会被删除吗?我不想丢失任何我想切换回一个特定版本的东西。怎么做?谢谢 我想我找到了。我需要做Update to revision。我说的对吗? 不!不要使用“更新到修订版”。阅读我的答案的第一行。 您好,感谢您的回复。 +1 为您的时间和答案。我无法理解一些事情,比如恢复。如果我恢复,它会删除现在存在的当前版本吗?我想我需要阅读有关颠覆的中级基础知识。我知道 tortoisesvn.net/docs 中有文档,但我需要基本的防御而不是使用。所以如果我得到了定义,我可以将它与文档一起使用。你能给我一些链接或参考书目 好的,我知道了。我需要恢复而不是update to revision,因为它不允许我提交新版本。我从@Vincent B 评论中得到了这个。我按照你的步骤仍然是第 3 点。我现在可以提交新版本。任何方式你都可以给我参考以找到基础知识。谢谢【参考方案2】:

我使用了与Stefan 相同的指令,取自Tortoise website。

但请务必在之后立即点击 COMMIT。直到我意识到这一点,我才变得疯狂。

如果您需要进行旧版本的修订,请执行以下操作:

    选择您需要还原更改的文件或文件夹。如果您想恢复所有更改,这应该是***文件夹。

    选择 TortoiseSVN → 显示日志以显示修订列表。您可能需要使用 Show All 或 Next 100 来显示您感兴趣的修订。

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

    提交。

【讨论】:

【参考方案3】:

右击SVN控制的文件夹,进入TortoiseSVN显示日志。写下你想要恢复的版本,然后去 TortoiseSVN更新到版本...

【讨论】:

很确定您可以右键单击日志中的修订并选择“更新到此修订” 是的,你可以,但我只是想展示其中一种方法。有几种方法。 更新到修订版不允许您提交更改。更新后,您将无法提交更改,因为您的工作副本的版本将与您要还原的版本相同。您需要使用“恢复到修订版”来做@Ricardo Alamino 想要做的事情。【参考方案4】:

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

【讨论】:

【参考方案5】:

这是另一种非正统但有效的方法*。

我最近发现自己在检查破坏代码的情况下,知道在所有集成工作完成之前我无法更新我们的生产代码(回想起来这是一个错误的决定,但我们没想到会停滞不前,但其他项目优先)。那是几个月前的事了,整合一直停滞不前。随之而来的要求是更改基本代码并在上周将其投入生产,而无需进行重大更改。

这是我们所做的:

在我签入前确认新要求在使用修订版时不会破坏任何内容后,我制作了一份包含新代码的工作目录的副本。然后我删除了工作目录中的所有内容并检查了我想要的版本。然后我删除了我刚刚签出的所有文件,并从工作副本中复制了这些文件。然后我提交了该更改,有效地从存储库中清除了重大更改,并将生产代码作为主要修订版。我们仍然有可用的重大更改,但它不再处于头部修订中,因此我们可以继续进行生产。

*我不推荐这种方法,但是如果你发现自己也有类似的情况,这是一个不会太痛苦的出路。

【讨论】:

【参考方案6】:

在 TortoiseSVN 上下文菜单中,选择“更新到修订版”,输入所需的修订号,然后瞧 :)

【讨论】:

不应该。如果您想还原用户的编辑,请使用“还原”。 更新到修订版使您的工作副本指向旧修订版。从您尝试提交的那一刻起,它就会抱怨您的工作副本已过期。

以上是关于使用 TortoiseSVN 恢复到以前的版本的主要内容,如果未能解决你的问题,请参考以下文章

SVN里恢复到某一天的版本操作

TortoiseSVN安装和使用

TortoiseSVN安装和使用

tortoiseSVN的使用,如何删除服务器上某些版本?

恢复到以前版本的 Firebase

恢复到以前版本的 wix 安装程序