0

我正在做一个使用 svn 的项目。我在目录中检出它的最新版本(使用svn checkout http://url /path/to/dest)。我做了一些修改,所以我svn add修改了文件,然后进行svn commit了更改。

不幸的是,我在错误的分支上进行了更改。现在我要做的是使用 svn update 到另一个分支中的特定提交,svn update -r 1234我收到以下错误消息:

svn: E160005: 目标路径“/dev/branches/project”不存在

我用 切换到正确的分支svn switch http://url,但仍然收到相同的错误消息。我怎样才能正确地恢复到那个提交?

4

1 回答 1

0

我认为您的方法存在多个问题。

首先,您在 Subversion 中提交的更改是不可逆的¹,因此您应该做的第一件事是实际“撤消”错误提交的影响

由于任何提交都可以被视为“补丁”,它指定了更改内容和更改方式 - 与提交之前的存储库状态相比,要撤消提交引入的更改,您需要记录另一个提交,该提交的更改与原始提交。

这是通过再次合并你的错误提交来完成的,但是你告诉 Subversion 反向应用它的更改——更多信息请参见这里

其次,您希望错误的提交出现在另一个分支上。这被称为“樱桃采摘”:您希望将记录在其他地方的特定更改带到另一个分支上。

是它是如何完成的。


¹来自客户,就是这样。可以使用专用工具对物理存储库进行特殊手术。但我认为这不是我们想要在这里做的。

于 2018-07-11T08:22:33.507 回答