好的,这是一个真实的场景,我不想承担风险,所以我问。
我和Bob正在开发一个SVN下的.NET项目(VS2010)。一切都运行良好,直到今天。然后Bob在提交时犯了一个错误。这是一份简短的提交历史:
启。 158 - 我 - 一切都很好 - 我签了一些工作
启。 159 - 鲍勃 - 一切都很好 - 鲍勃办理了一些工作
启。 160 - 鲍勃 - 犯了一些错误
在提交Rev.158之后我继续进一步工作,现在我的工作副本包含许多需要检查的工作。我怎么能要求SVN(我有Tortoise)简单地清除Rev. 160并返回Rev 159状态?我读了一些其他帖子,他们建议使用SVN历史记录并点击上一个好提交并从上下文菜单中选择“恢复到此修订版本”命令,但如果我这样做,它会询问我是否要将我的工作副本还原为Rev 159,这意味着我将失去所有的变化。我只是希望服务器端简单地撤消Rev. 160而不影响我的工作副本。
答案 0 :(得分:2)
在Subversion中,恢复到以前的版本称为反向合并。
从命令行,您可以执行以下操作:
$ svn merge -c -160 .
请注意修订前面的减号。这表示要删除修订版160中引入的更改。即使在签入其他修订版后,您也可以执行此操作。但是,您想要的时间越长,就越有可能发生合并冲突。
你也可以在Tortoise中做reverse merge。这可以通过日志(右键单击修订版本并选择 revert )或通过“合并”对话框(选择反向合并复选框)来完成。
由于您正在进行.NET开发,我假设您正在使用VisualStudio。如果是,请使用AnkhSVN代替TortoiseSVN。 AnkhSVN集成在Visual Studio内部,并且知道VisualStudio不会添加到存储库中(与TortoiseSVN不同)。