还原SVN存储库上的文件但保留本地版本

时间:2010-06-21 20:02:59

标签: svn repository commit revert

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

5 个答案:

答案 0 :(得分:9)

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

  1. 将您的文件复制到一个单独的目录中[就像在桌面上一样]。
  2. 在您的SVN目录中,还原 那个具体的文件到了 以前的版本。
  3. 提交该版本,现在就是了 HEAD版本。
  4. 从桌面获取文件     并将其复制回来     覆盖它并且不检查它     英寸

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在SVN中使用“switch”命令。这很简单,值得了解。

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

答案 4 :(得分:0)

简短地编辑上游存储库的历史记录(在这种情况下为you can do,但不应如此),以下是实现此目的的最简单方法:

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

让我们假设意外的提交是if (auto it = m.find(10); it != m.end()) { return it->second.size(); } (您可以使用$REVsvnversion进行查找)。然后执行以下操作:

svn 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 + 1。)

完成。