svn - 回滚提交现在我想恢复该提交

时间:2015-03-05 10:53:53

标签: svn tortoisesvn

我将一些代码提交到trunk,让我们说版本号为499.我测试了结果并且并不完全开心,然后我使用工作副本中的命令行进行了合并恢复

svn merge -c -499 .

这很好用,重新测试我的代码之后我意识到提交没有问题,所以我想恢复代码,我可以看看它有499代码前的文件,我试过了以下但没有工作

svn merge -c 499 .

我从来没有在恢复/恢复提交的环境中使用svn,我在网上搜索但没有什么真正适合我的查询,我知道它会变得非常简单但很难找到它。

编辑:应该说更改在存储库中

3 个答案:

答案 0 :(得分:1)

好的,所以在网上寻找关于我的问题的更多数据,我使用以下代码解决它,可能不是解决它的最干净的方法,但它对我有用

svn merge -r HEAD:499 .

提出了一个混乱,所以我选择tf(他们的全部)将文件恢复到修订版499

答案 1 :(得分:0)

如何解决此问题取决于您是否使用svn commit将合并发送到存储库。

最好的方案是,如果您尚未提交更改。 svn merge仅影响您的工作副本,因此撤消该合并就像svn revert一样简单。然后,您的工作副本将与您的存储库中的内容相匹配。

如果您已提交更改以恢复修订版499,则事情会稍微复杂一些,因为您需要撤消存储库中的更改。例如,假设此恢复已提交为修订版500.您希望返回修订版499,因此您需要删除修订版500中的更改:

svn merge -c -500 .

换句话说,“恢复还原提交”。然后提交更改以将其推送给所有人。

答案 2 :(得分:0)

想想你做了什么:

  

您创建了一个新的修订版。此修订版具有一组您所做的更改,就像其他每个修订版一样。此更改可能已在先前的修订版中回滚您的更改,但最终,它只是另一个Subversion修订版。

你如何摆脱不再需要的修订版?你做了一个反向合并,就像你去掉你不想要的其他更改一样。

要回滚回滚,只需执行该特定修订的反向合并:

$ svn log -r503
--------------------------------------------------------------------------
r503 | user2751034 | 2015-03-05 13:37:48 -0500 (Thu, 05 Mar 2015) | X lines
Rolled back change in revision 400
--------------------------------------------------------------------------

因此,您在修订版503中撤销了修订版400.(而且,这就是我们做好,详细的提交注释的原因!)

因此,要撤消更改修订版400中的更改...

$ svn merge -c -503 .

而且,现在您在修订版400中所做的更改又回到了存储库中!