svn - 由于某些跳过的路径,恢复更改失败

标签 svn merge revert

我读过这个答案:How do I return to an older version of our code in Subversion?并使用命令 svn merge -r 150:140 .恢复到旧版本(我不需要提交恢复的更改,只需转到旧版本的文件)。在此之前,我有一个干净版本的 repo 修订版为 150(没有手动更改文件)。不幸的是,我收到了这些警告:

...
Skipped 'some/file.h'
Skipped 'some/file2.h'
...
Skipped 'some/file3.h'
Skipped 'some/file4.h'
...
Summary of conflicts:
Skipped paths: 4

这让我感到惊讶,因为我想要做的就是返回一些旧版本的文件(并且我事先没有进行任何更改)。

这可能是什么原因造成的?我如何进入旧版本?

编辑:我已经检查过,显然这些文件在当前版本 (150) 中不存在(在磁盘上或在 SVN 中):
svn: warning: W155010: The node 'some/file.h' was not found.

但它们确实存在于修订版 140 中。所以在某些地方它们被删除了。但是为什么SVN不能直接恢复它们呢?

最佳答案

这种树冲突最常见的根本原因是,您的工作副本有一些更改,然后您尝试合并 - 可能会发生不好的事情。只是从输出中猜测,它可能与“some”文件夹有关(即,如果整个文件夹在修订版 140 和 150 之间被删除 - 不仅仅是文件;或者如果您在合并之前对跳过的文件进行了一些本地更改)。

如果将来再次发生这种情况,请尝试通过执行以下命令来恢复失败的合并:

svn revert --recursive

回到修订版 150,从您的工作副本中删除任何未版本控制的文件和文件夹,然后使用以下命令重新运行合并
svn merge -r 150:140 -v --force .

( -v 将显示更详细的信息,--force 将从您的工作副本中删除文件,即使它们是在本地修改的)

万一其他一切都失败了,最后的办法总是只是使用从修订版 140 到新的本地文件夹 check out 一个新的工作副本
svn checkout -r 140 $your_url

关于svn - 由于某些跳过的路径,恢复更改失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188072/

相关文章:

svn - VisualSVN 服务器 3.2 - 意外的 HTTP 状态 405

svn - Subversion 结帐错误 : Missing update-report close tag

svn - 支持/反对使用 svn 进行部署的原因?

mercurial - 使用 hg revert 恢复 Mercurial 中的一组文件

svn - Mercurial 和 Subversion : changing, 提交、从 SVN 拉取、推送, "Sorry, can' t 找到 merge 修订版的 svn 父级。”

c - 如何将两个windows vc静态库合并为一个

git - 如何在同一个 git 分支中恢复旧功能?

git - merge svn 分支到新的 git 分支

git - 在 Git 中恢复文件的选择行

git - 手动重新添加文件或使用 git revert 之间有区别吗?