我读过这个答案: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/