需要在Subversion中恢复已删除的分支

时间:2009-10-14 19:35:07

标签: svn version-control branch

我有一个Subversion存储库的两个工作副本,一个trunk,还有一个我创建的分支。

我不小心删除了存储库浏览器中的分支。如何恢复分支?有没有办法撤消整个存储库的最新提交?

7 个答案:

答案 0 :(得分:91)

如果您使用TortoiseSVN,这是一个解决方案:

  1. 在repo浏览器中,导航到您删除的文件夹的父文件夹(例如“branches”)。
  2. 右键单击该文件夹并执行“显示日志”。
  3. 找到删除特定分支文件夹的修订版。
  4. 选择修订前的修订版。
  5. 右键单击并选择“浏览存储库”。您现在正在查看删除分支之前的时间点的存储库状态。
  6. 找到您删除的分支文件夹,选择,右键单击,然后选择“复制到...”
  7. 您现在可以将已删除的文件夹复制到新名称甚至同名。

答案 1 :(得分:74)

使用:

svn cp [path to deleted branch]@[revision before delete] [new path]

例如:

svn cp svn://myrepo.com/svn/branches/2.0.5@1993 \
       svn://myrepo.com/svn/branches/2.0.5_restored

1993年是删除前的修订版......

Here是一些很好的文档......

必须有一些方法可以转义用户名中的@符号...

答案 2 :(得分:4)

假设您的上一次修订是108:

svn merge --revision 108:107
svn diff 
svn commit -m "Reverted revision 108"

您还可以将源URL添加到合并中:

svn merge --revision 108:107 http://svn/repo/

Stack Overflow上的其他地方: Undoing a commit in TortoiseSVN

答案 3 :(得分:3)

我遇到了这个问题,但上面的命令对我没用。什么做得更容易。在删除之前,我检查了一个版本的分支。

删除的修订版本是9331.我在9330检查了它:

svn co https://svn.acme.com/svn/giantFlySwatterTargetingSystem/branches/bug1234@9330 restored

这是我想要的简单解决方案。

答案 4 :(得分:1)

这对我有用,

  

svn cp --username your_user_name   HTTPS:// <强> path_to_your_repo /支链/的 deleted_branch_name @ <强> last_revision_before_deletion < /强>   HTTPS:// <强> path_to_your_repo /支链/的 new_name_for_branch

答案 5 :(得分:1)

或者,如果是删除分支的单个提交:

恢复提交然后提交

svn merge -c -REV .
svn commit -m "Reverting deletion of branch XYZ"

答案 6 :(得分:0)

我遇到了同样的问题并在SmartSVN(Enterprise 6.0.2)中以这种方式解决了这个问题:

  • 在trunk / HEAD上打开一个视图
  • 在资源库浏览器中调用菜单存储库/打开(已删除的分支在分支文件夹中不存在)
  • 在存储库浏览器中,调用菜单Repository / Show Revision ...
  • 选择删除前的修订版(已删除的分支重新出现在branches文件夹中)
  • 右键单击已删除的分支,在菜单中选择“复制”,然后输入目标路径