我们刚刚在一个问题上走了错误的路线花费了两个星期的时间(伴随着我们在SVN仓库中提交的所有内容)。现在我们想出了正确的解决方案(需要我们的代码回到两周前的状态)。我们本应该在两周前分支处理,但现在这已经无关紧要了。
显然,我可以再次检出该项目并将其复制到当前版本的存储库上并进行检查。
是否有更干净的方法可以避免二次检查?
显然,我可以再次检出该项目并将其复制到当前版本的存储库上并进行检查。
是否有更干净的方法可以避免二次检查?
处理这个问题有几种方式:
$ svn merge -r$rev2:$rev1 .
这里假设$rev2 > $rev1。这将撤销这两个版本之间的更改。如果您只需撤销一个版本,则可以使用以下内容:
$ svn merge -c -$rev .
也就是说,修订版应该是一个负数。这样只会回退到这一个修订版。
如果这项工作不是在主干上完成的,而是在一个分支上完成的,并且你想要彻底抛弃那个分支,你可以简单地重新创建分支,甚至删除旧的错误分支。分支(和标签)可以从任何时间点创建:
$ svn cp -r$rev $REPO/branches/$bad_branch/$proj $REPO/branches/$new_branch
$ svn delete $REPO/branches/$bad_branch
迈克提供的解决方案对我有效。
在一个单独的分支中
$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
这将撤销302和303之间的更改。
然后,您可以在分支中提交更改,进行测试,然后像往常一样合并回主干。