【问题标题】:Revert a file on SVN repository but keep local version恢复 SVN 存储库中的文件但保留本地版本
【发布时间】:2011-03-06 12:14:47
【问题描述】:

我不小心对存储库进行了一些未完成的更改。我不想丢失我的本地更改,但我想将存储库中的文件恢复到我提交更改之前的位置。

【问题讨论】:

    标签: svn repository commit revert


    【解决方案1】:

    无需编辑上游存储库的历史记录(you can do,在这种情况下不应该这样做),以下是实现此目的的最简单方法:

    1. 在本地撤消更改
    2. 提交已撤消的更改
    3. 在本地重做更改

    假设意外提交是$REV(您可以使用svnversionsvn log 找出答案)。然后执行以下操作:

    svn merge -c -$REV .
    svn ci -m "Revert r$REV"
    

    最后一条命令的最后一行给出了新的修订号:

    Committed revision $NEW_REV.
    

    使用下面的内容在本地恢复您的更改:

    svn up # Necessary if your repository has mixed revisions (e.g. due to externals).
    svn merge -c $NEW_REV .
    

    通常 $NEW_REV 应该只是 $REV + 1。)

    完成。

    【讨论】:

      【解决方案2】:

      在 SVN 中使用“switch”命令。这很容易,而且值得了解。

      1. 如果这是您第一次,请将整个目录复制到安全的地方,或使用 WinZip(使用保留目录结构的选项)。
      2. 在您的私有分支中(您确实有一个 私人分行,对吧?如果没有,请制作 一),制作分支的副本 问题,使用存储库 浏览器。
      3. 在您的 PC 上进行“切换” (在 TortoiseSVN 中称为“开关”)到 将本地文件夹指向 私人分支机构。
      4. 签到。
      5. 切换回原来的分支。
      6. 还原。

      【讨论】:

        【解决方案3】:

        不确定是否有执行此操作的功能。但我会做的是

        1. 获取您的文件并将其复制到一个单独的目录中 [就像在您的桌面上一样]。
        2. 在您的 SVN 目录中,还原 那个特定的文件到
          以前的版本。
        3. 提交该版本,因此它现在是 HEAD 版本。
        4. 从桌面获取文件 并将其复制回去,然后 覆盖它而不检查它
          在。

        【讨论】:

        • 如果更改影响多个文件,这是完全不切实际的。
        【解决方案4】:

        我建议将您提交的特定文件保存到外部文件夹。然后还原存储库中的文件并提交。从而导致您提交之前的状态。然后获取您保存的文件并替换它们,以便您的副本具有您的本地更改。

        【讨论】:

          【解决方案5】:

          唯一的选择是备份您的更改,然后在服务器上进行反向合并,然后将您的更改复制回您的工作副本。

          【讨论】:

            猜你喜欢
            • 2011-03-29
            • 2010-09-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-28
            • 2013-01-27
            • 2018-11-10
            • 1970-01-01
            相关资源
            最近更新 更多