【问题标题】:svn revert from changesetsvn 从变更集恢复
【发布时间】:2010-10-27 09:31:26
【问题描述】:

有没有办法从特定变更集恢复?

正如我从变更集中看到的那样,更改已提交。现在,我想恢复提交之前的文件。

我做了 svn revert path/to/file 但它没有要求输入密码或任何东西。什么都没有发生。

【问题讨论】:

  • 当我对每个文件执行 svn revert 时什么都没有发生。
  • 请详细一点。如果更改已提交,您可以恢复到修订前提交...
  • svn revert — 撤消所有本地编辑。正如文档所说,它不会还原已提交的修订。

标签: svn


【解决方案1】:

您可以进行“反向合并”,即“应用”从当前版本到要返回的版本的所有更改(即撤消从要返回的版本到当前版本的所有更改)。

svn merge -r HEAD:nnnn .

其中nnnn 是您要返回的修订版。 http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.merge.html

在查看更改、解决任何冲突等之后,使用svn commit 将更改推送到存储库。

【讨论】:

  • 是的,谢谢 zellus,我的错!我已经更新了我的答案以反映这一点。
  • svnbook.red-bean.com/en/1.5/… 详细讨论了还原提交。
  • 它说“不能从内部替换目录”
  • 已解决:svn merge -r1234:4321 path/to/yourfile path/to/theirfile,其中 1234 是您的修订版,4321 是您要返回的修订版。
【解决方案2】:

已解决: svn merge -r1234:4321 path/to/yourfile path/to/thefileyouwanttogobackto,

在哪里
1234 是您的修订版
4321 是您要返回的版本。

【讨论】:

    【解决方案3】:

    SVN Book中描述了最简单的方法:

    $ svn merge -c -303 http://svn.example.com/repos/calc/trunk
    

    这将撤消在变更集 303 中所做的任何更改,您可以根据需要查看并提交它们。

    【讨论】:

    • 这是完美的。我可以保留当前的工作更改并更改特定的更改集并有选择地重新提交。方便。
    【解决方案4】:

    如果您知道要在此处还原的某个版本是还原它的另一种方法。

    svn diff -c r1031 | grep ^Index | awk '{ print $2}' | xargs -I {file} svn export -r 1030 {file} {file}
    

    它会查找所有在 r1031 中更改的文件,并将其替换为修订版 1030 中的相同文件。

    P.S.:另外,如果您要还原的文件在 1030 中不存在,请小心。它可能不会按您预期的方式工作。

    【讨论】:

      【解决方案5】:

      详情请参阅此博客条目:

      http://blog.mafr.de/2008/05/13/revert-a-commit-in-svn/

      有一些很好的背景解释:

      要了解这里发生的事情,需要一些背景知识 合并命令从概念上讲:它记录哪些更改必须 对修订版 N 进行修改以将其变为修订版 N+1(称为增量) 并将其应用于工作副本。这不是我们想要的 场景,所以我们颠倒命令上通常的修订顺序 线。实际上,我们告诉合并命令创建一个增量 另一边。结果是代码库的“倒带”。

      此外,在 cmets 中,如何在 TortoiseSVN 中执行此操作:

      要使用 TortoiseSVN 执行此操作,请右键单击目录或文件 您想恢复并使用 TortoiseSVN 菜单中的“合并”。选择 选项“合并两个不同的树”。在“从”下选择头部 修订。在“To”下选择旧版本 + 1(即,如果您愿意 要恢复到修订版 169,请在框中输入修订版 170)。

      【讨论】:

        猜你喜欢
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多