【问题标题】:How do I revert the Subversion repository, not my working copy, to a specific revision?如何将 Subversion 存储库(而不是我的工作副本)还原为特定修订版?
【发布时间】:2010-06-27 19:48:33
【问题描述】:

我对 Subversion 比较陌生,来自 Source Safe,这让我发疯。使用 Tortoise 界面,Commit 不断向我显示我的 bin 目录中的 .java 文件,它说这些文件“丢失” - 好的,这是一个单独的问题。基本上,当我尝试了几件事来摆脱虚假的“bin”消息时,Tortoise 反而删除了我的整个源目录。我尝试重新添加东西,但是当我添加时,它是新的,没有历史记录。

如何将 Subversion 恢复到特定版本?好像我从来没有发生过一样?我知道如何在 VSS 中执行此操作,但每次我尝试使用 TortoiseSVN 时,它都会修改我的工作副本。我不想再检查我的工作副本,因为那会让我失去所有的历史。 Subversion 能忘记吗?

顺便说一句,已经尝试过查看 stackoverflow,但我发现最接近的事情是导出和重新导入整个存储库,我认为我还没有达到这一点。 Subversion 必须能够做到这最简单的事情!

【问题讨论】:

    标签: tortoisesvn svn revert


    【解决方案1】:

    Subversion 不会忘记,但您可以执行以下操作:

    假设您当前的修订版是 100,而您想回到修订版 70。您将创建一个修订版 101,它与 70 完全相同。

    1) 查看一份干净整洁的工作副本。

    2) 合并(向后)更改。

    svn merge -r100:70 http://repo.com/my/project/trunk
    

    3) 检查健全性。您的工作副本正是您想要的吗?如果是这样:

    svn commit -m "rolled back to the good old days of r70"

    【讨论】:

      【解决方案2】:

      由于您特别询问了 TortoiseSVN,您可以执行以下操作:

      • 在您的工作目录中单击鼠标右键
      • TortoiseSVN
      • 更新到修订版
      • 点击日志
      • 选择您想要的修订版(这会将修订版号放入修订版框中 - 如果您已经知道修订版号,您可以直接输入)。
      • 点击确定

      然后只需使用适当的消息将您的更改提交到存储库。

      【讨论】:

      • 当我尝试将旧版本提交到主干时,我收到一条错误消息,告诉我需要先更新它 - 这当然会将其恢复为 HEAD 版本...
      • 我必须进入日志,右键单击我想要的修订版,“恢复到此修订版”,然后重新提交。 “更新到修订版”对我不起作用...
      【解决方案3】:

      你没有收回 SVN;你拿回你的工作副本,然后提交它。

      编辑:根据命令是什么(IE,svn cp 而不是 cp),颠覆会记住文件的祖先(历史)。

      您可以反向合并它,也可以复制它。复制可能是更好的选择。

      如果我要这样做,我会这样做:

      svn update
      svn rm directory
      svn ci -m "temporarily removed the content"
      svn cp -r [revision] directory ./directory
      svn ci -m "copied revision [revision] to current"
      

      但是,可能更好的方法是:

      svn update
      svn merge -r HEAD:[revision] directory directory
      svn ci -m "reverted back to [revision]"
      

      对于我放置“目录”的某些地方,您可能必须使用存储库中位置的 URL,例如,如果您刚刚删除了根目录(因此没有什么可以引用的了) .无论是那个还是合并,第一个是 repo 的 URL,第二个是本地目录......尽管它可能只使用本地目录两次。

      只要记住;如果它不能正常工作,请不要检查它:D (这是使用第二种方法的优势……而且,它需要更少的数据传输)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-23
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多