1

假设我想恢复 Subversion 中版本 n 和 (n-1) 之间的一些更改。

我只是从版本(n-1)中放回文件 - 从存储库中取出它们并作为最新版本重新签入到主干中。

在这里,他们似乎想从版本(n-1)创建一个分支并将其与主干合并。

这如何更好或更“正确”?

在这种情况下,它是一个目录中的几个文件。这些文件没有其他最近的更改。

4

3 回答 3

2

为您和其他人彻底删除错误提交...

“还原”不是您要寻找的,因为它只影响本地更改。为了恢复已经提交的修订,您必须使用否定语法使用“svn merge”,方法是在要删除的修订前面放置一个“-”(minu)。示例:

current rev: 1337

bad rev: 1330

$sh> svn merge -c -1330 svn://your.svn.url:/your.svn.path .
$sh> svn ci -m "removed revision 1330"

因此,您将您的存储库与 rev“-1330”反向合并,然后进行签入,从而为您和其他开发人员从 1330 中删除更改。

将要

于 2011-08-08T21:23:15.203 回答
0

要删除特定修订之间的更改,例如过去的 1000 和 1010:

从签出到数据工作副本类型:

svn merge -r 1010:1000 .

这将删除工作副本中修订版 1000 和 1010 之间的所有更改(不包括添加到 1000 本身的更改)。只要您没有进行任何本地修改,并且在您确认它完成了您想要的操作之前不要重新检查结果,就可以安全地使用它。

在您的特定情况下,因为您只想删除一个修订版,您可以使用“-c”而不是更通用的 -r:

svn merge -c 2000 .

这等效于 -r 1999:2000 删除 1999 年和 2000 年之间的更改。

于 2011-08-09T17:52:53.003 回答
0

使用svn merge,它对您的场景非常有用。

svn merge -c n http://xxxx/xxx/xx
于 2011-09-02T07:35:47.793 回答