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

Sta*_*bie 34 svn

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

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

ash*_*cus 53

从命令行:

svn up -r [revision_number]
Run Code Online (Sandbox Code Playgroud)

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

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

  • SVN会要求您在提交之前将工作副本更新为HEAD,因此此过程将不起作用.来自已知修订版的更好的分支:svn cp http:// myrepos/oldbranch @ 10 svn cp http:// myrepos/newbranch然后,如果你愿意,你可以重新命名newbranch. (7认同)

Ani*_*kur 12

您只需使用即可更新修订版

svn up -r 10
Run Code Online (Sandbox Code Playgroud)

但正如Christoph所说,这不会让你提交更改,因为SVN需要你在提交之前将工作副本更新为HEAD.你可以做的是

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"
Run Code Online (Sandbox Code Playgroud)


Uns*_*ned 9

三种选择:

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

svn merge $(REPO)@$(GOODREV) $(WC)
Run Code Online (Sandbox Code Playgroud)

SVN转储:( 完全删除不良修订)

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

手工编辑:( 删除不良修改,不安全,不得已)

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

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

请注意,如果您使用的是TortoiseSVN,则还必须完成以下步骤:

  1. 删除中的所有文件 %APPDATA%\TortoiseSVN\logcache\*
  2. TSVNCache.exe通过任务管理器终止所有实例.(通常有一个,但在WinVista +上可能是2,因为UAC安全性,这可以防止提升的应用程序与非提升的应用程序进行交互TSVNCache.exe.第一次Save As...从提升的应用程序打开对话框时,TSVNCache.exe会产生提升的.)

这将修复由TortoiseSVN的缓存与新的repo状态冲突导致的奇怪日志显示.

  • 您能否举一个合并了var的合并示例? (2认同)