【问题标题】:SVN merge previous revision into working copySVN 将以前的版本合并到工作副本中
【发布时间】:2012-09-15 03:50:05
【问题描述】:

如果

  • 我正在开发版本 5 的 SVN 分支。
  • 我进行了更改,提交创建修订版 r6。
  • 在 r6 引入问题时恢复到 r5,并提交,创建 r7
  • 继续在 r7 上工作,最终将更改提交到 r10

如何将 r6 中所做的更改合并回我的工作副本?

我试过了

svn merge -r5:6 .

svn merge -r5:HEAD .

两者似乎都没有做任何事情。我做错了什么?

【问题讨论】:

    标签: svn version-control merge


    【解决方案1】:

    试试这个:

    svn merge --ignore-ancestry -r5:6 .
    

    或使用更新的语法:

    svn merge --ignore-ancestry -c6 .
    

    b.t.w.:我建议始终指定要使用的文件而不是“。”

    【讨论】:

    • 这与 Subversion 1.7.19 完美配合,谢谢!
    • 我同意,这是问题的正确答案。谢谢米迪斯。
    【解决方案2】:

    如果您使用的是相对较新的 svn 版本,您可以使用:

    svn merge -c -6 .
    


    (或您要恢复的特定文件,而不是“。”)
    这是以下的简写:

    svn merge -r6:5 .
    

    因此,如果您使用的是较旧的 subversion 版本(1.6.x 之前),您可以使用此语法。

    这可能会在您的存储库中引入属性(svn:mergeinfo,如果有记忆的话),至少如果您对整个目录执行合并。将更改还原到单个文件或一组文件不会影响属性。如果您不希望将这些属性添加到您的存储库中,您可能需要回退到补丁(自动或手动)。

    【讨论】:

    • 不起作用。颠覆什么都不做。答案对我来说似乎也是错误的-c -6 应该撤消 r6 变更集。但是我们想重新引入 r6 变更集。 @Midis 的回答有效。
    【解决方案3】:

    我对命令行svn不太熟悉。但如果正确的用法没有得到你想要的结果,我会尝试:

    1. 根据版本 r6(r6 和 r5 之间的差异)创建补丁。
    2. 将其应用于工作副本。

    【讨论】:

    • 谢谢,我考虑过这一点,最后选择了svn diff -r5:6 > patch.diffpatch -p0 < patch.diff。我仍然很想知道是否有人知道通过 svn 执行此操作的方法。
    • 我也是这样做的,只是重新应用一个 diff 文件。
    【解决方案4】:

    尝试撤消合并出初始还原的修订。

    例如而不是 svn merge -r 5:6 试试 svn 合并 -r 7:6 .

    【讨论】:

      【解决方案5】:

      你可以恢复。创建一个标签。完成后,您可以将标记中的更改合并到您正在工作的分支中。

      【讨论】:

        猜你喜欢
        • 2011-04-03
        • 2016-08-25
        • 1970-01-01
        • 2012-11-24
        • 2011-02-23
        • 1970-01-01
        • 2015-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多