如何将我的subversion存储库回滚到早期版本

时间:2013-07-08 19:27:38

标签: version-control svn

我们花了两个星期的时间在一个问题的错误路径上工作(所有提交到SVN存储库的提交都是这样)。我们现在提出了正确的解决方案(需要我们的代码库回到两周前的情况)。我们应该在两周前进行分支,但现在这是无关紧要的。

显然,我可以再次检查项目,然后将其复制到当前版本的存储库中并检查它。

如果没有第二次结账,是否有更简洁的方法可以做到这一点?

3 个答案:

答案 0 :(得分:3)

有很多方法可以做你想要的。最简单的方法是将一个新的代码库副本签出到dev机器,指定在你走错了开发路径之前提交的修订版本。然后,只需将该代码作为最新版本重新检入。您不仅有效地将代码库“还原”到该修订版,如果您发现错误解决方案的某些元素毕竟是有用的,那么您仍然可以轻松访问这些元素。

此外,正如所说的,您可以随时在任何修订版中分支代码库。在开始工作之前,只需剪切修订的一个分支,然后沿着新的开发路径继续。请记住,将此分支合并回主干可能会有问题;你希望分支中开发的最终结果取代trunk批发的代码库。这是可能的,但它可能会变得混乱。

答案 1 :(得分:2)

迈克提供的solution为我工作。

在另一个分支

$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk

(这解除了302和303之间的变化)。

然后你可以在你的分支中提交更改,测试然后正常合并回主干。

答案 2 :(得分:2)

有几种方法可以解决这个问题:

还原您的更改:

 $ 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