SVN:如何恢复到以前的版本?

时间:2011-02-22 00:10:34

标签: svn

在我正在进行的项目中犯了一系列错误。如何恢复已知的工作版本并在此基础上构建?说我在修订版15,但我想回到修订版10 - 并继续工作10。我正在使用Zend Studio。

我可以删除SVN中存在的修订吗?

4 个答案:

答案 0 :(得分:50)

从命令行:

svn up -r [revision_number]

其中[revision_number]是您要恢复的修订版。

不,您无法删除SVN中已存在的修订版。

答案 1 :(得分:9)

三个选项:

反向合并:(最快,保留错误修订,添加新版本)

svn merge $(REPO)@$(GOODREV) $(WC)

SVN转储:(完全删除错误修订)

svnadmin dump $(REPO) -r 1:$(GOODREV) > dumpfile
svnadmin load $(NEWREPO) < dumpfile
# Now delete $(REPO), and use $(NEWREPO)

手工编辑:(删除不良版本,不安全,不得已而且)

您可能需要此功能的唯一原因是,由于某种原因,您具有对存储库的文件级访问权限,但没有shell访问权限。请注意,这仅在SVN 1.6和1.7上进行了测试。

  1. 将您的工作副本更新为$(GOODREV)(如果留在HEAD,我们完成后将无法使用。)
  2. 采取任何措施保护来自外部访问的回购。如果它已连接到Web服务器,请立即断开连接。在此过程中第三方访问回购可能会损坏它。
  3. 备份你的回购。 (永远不要伤害,以防出现问题。)
  4. db/current中的号码更改为$(GOODREV)。请务必不要更改LF行结尾。
  5. 删除db/revs/*/*db/revprops/*/*中&gt;所有编号的文件(不是文件夹) $(GOODREV)
  6. 删除db/rep-cache.db
  7. 将您的工作副本更新为HEAD,现在应该等于$(GOODREV)
  8. 请注意,如果您使用的是TortoiseSVN,则还必须完成以下步骤:

    1. 删除%APPDATA%\TortoiseSVN\logcache\*
    2. 中的所有文件
    3. 通过任务管理器终止所有实例TSVNCache.exe。 (通常有一个,但由于UAC安全性,可能在WinVista +上为2,这会阻止提升的应用程序与非提升TSVNCache.exe进行交互。第一次打开{{1}时来自提升的应用程序的对话框,升高的Save As...将会产生。)
    4. 这将修复由TortoiseSVN的缓存与新的repo状态冲突导致的奇怪日志显示。

答案 2 :(得分:9)

您只需使用

更新修订版即可
svn up -r 10

但正如Christoph所暗示的那样不允许你提交更改,因为SVN需要你在提交之前将工作副本更新为HEAD。你可以做的是

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"

答案 3 :(得分:0)

从TortoiseSVN办公地点获取文档。

  1. 使用修订日志对话框
  2. 使用合并对话框
  3. 我使用方法2并在我这边工作得很好。

    https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html