假设我想恢复 Subversion 中版本 n 和 (n-1) 之间的一些更改。
我只是从版本(n-1)中放回文件 - 从存储库中取出它们并作为最新版本重新签入到主干中。
在这里,他们似乎想从版本(n-1)创建一个分支并将其与主干合并。
这如何更好或更“正确”?
在这种情况下,它是一个目录中的几个文件。这些文件没有其他最近的更改。
为您和其他人彻底删除错误提交...
“还原”不是您要寻找的,因为它只影响本地更改。为了恢复已经提交的修订,您必须使用否定语法使用“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 中删除更改。
将要
要删除特定修订之间的更改,例如过去的 1000 和 1010:
从签出到数据工作副本类型:
svn merge -r 1010:1000 .
这将删除工作副本中修订版 1000 和 1010 之间的所有更改(不包括添加到 1000 本身的更改)。只要您没有进行任何本地修改,并且在您确认它完成了您想要的操作之前不要重新检查结果,就可以安全地使用它。
在您的特定情况下,因为您只想删除一个修订版,您可以使用“-c”而不是更通用的 -r:
svn merge -c 2000 .
这等效于 -r 1999:2000 删除 1999 年和 2000 年之间的更改。
使用svn merge
,它对您的场景非常有用。
svn merge -c n http://xxxx/xxx/xx