【问题标题】:svn - Revert to an old commit on a different branchsvn - 恢复到不同分支上的旧提交
【发布时间】:2018-12-19 04:00:10
【问题描述】:

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

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

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

我使用svn switch http://url 切换到正确的分支,但仍然收到相同的错误消息。如何正确恢复到该提交?

【问题讨论】:

    标签: svn branch svn-update


    【解决方案1】:

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

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

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

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

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

    Here 是这样完成的。


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

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 2023-01-11
      • 2018-11-01
      • 1970-01-01
      • 2012-04-04
      • 2021-09-22
      • 2016-06-23
      • 2015-09-08
      • 2012-10-31
      相关资源
      最近更新 更多