【问题标题】:Reverting in subversion在颠覆中恢复
【发布时间】:2011-08-08 21:15:21
【问题描述】:

假设我想恢复 Subversion 中版本 n 和 (n-1) 之间的一些更改。

我只会放回版本 (n-1) 中的文件 - 从存储库中取出它们并作为最新版本重新签入到主干中。

他们似乎想从版本 (n-1) 中创建一个分支并将其与主干合并。

这如何更好或更“正确”?

在这种情况下,它是一个目录中的几个文件。 这些文件最近没有其他更改。

【问题讨论】:

    标签: svn revert


    【解决方案1】:

    为您和其他人彻底删除错误提交...

    “还原”不是您要查找的,因为它只影响本地更改。为了恢复已经提交的修订,您必须使用否定语法使用“svn merge”,方法是在要删除的修订前面放置一个“-”(minu)。示例:

    current rev: 1337
    
    bad rev: 1330
    
    $sh> svn merge -c -1330 svn://your.svn.url:/your.svn.path .
    $sh> svn ci -m "removed revision 1330"
    

    因此,您使用 rev "-1330" 反向合并您的存储库,然后进行签入,从而为您和其他开发人员删除 1330 中的更改。

    【讨论】:

      【解决方案2】:

      要删除特定修订之间的更改,例如过去的 1000 和 1010:

      从签出到数据工作副本类型:

      svn merge -r 1010:1000 .
      

      这会删除工作副本中修订版 1000 和 1010 之间的所有更改(不包括添加到 1000 本身的更改)。只要您没有进行任何本地修改,并且在您确认它完成了您想要的操作之前不要重新检查结果,就可以安全地进行此操作。

      在您的特定情况下,由于您只想删除单个修订版,您可以使用“-c”而不是更通用的 -r:

      svn merge -c 2000 .
      

      这相当于 -r 1999:2000 删除 1999 年和 2000 年之间的更改。

      【讨论】:

      • 它并没有直接回答我的问题(我猜这是他们在我公司所做的事情),但它让我认为这是更好的方法。我认为这将适用于目录三的一部分?
      • 如果我想将更改保留在分支中(将它们移动到分支中)怎么办?
      • 您可以从任何修订版创建分支,包括带有更改的修订版。您还可以在分支上运行合并命令,将指定的更改移入或移出分支。
      【解决方案3】:

      使用svn merge,它对您的场景非常有用。

      svn merge -c n http://xxxx/xxx/xx
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2019-09-03
        • 2011-02-12
        • 2011-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多