7

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

4

5 回答 5

9

不确定是否有功能可以做到这一点。但我会做的是

  1. 把你的文件复制到一个单独的目录中[就像在你的桌面上一样]。
  2. 在您的 SVN 目录中,将该特定文件恢复到
    以前的版本。
  3. 提交那个版本,所以它现在是 HEAD 版本。
  4. 从桌面获取文件并将其复制回来,然后覆盖它,不要签
    入。
于 2010-06-21T20:05:16.937 回答
2

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

于 2010-06-21T20:04:34.500 回答
0

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

于 2010-06-21T20:05:38.227 回答
0

在 SVN 中使用“switch”命令。这很容易,也是一个值得了解的技巧。

  1. 如果这是您第一次,请将整个目录复制到安全的地方,或使用 WinZip(使用选项来保留目录结构)。
  2. 在您的私有分支中(您确实有一个私有分支,对吗?如果没有,请创建一个),使用存储库浏览器制作相关分支的副本。
  3. 在你的 PC 上做一个“切换”(在 TortoiseSVN 中称为“切换”)将你的本地文件夹指向私有分支。
  4. 检查它。
  5. 切换回原来的分支。
  6. 恢复。
于 2010-06-22T01:21:29.057 回答
0

缺少编辑上游存储库的历史记录(在这种情况下您可以但不应该这样做),以下是实现此目的的最简单方法:

  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。)

完毕。

于 2019-01-04T11:01:12.463 回答