这似乎是人们可能想要用subversion做的最基本的事情之一,但是我没有长时间使用版本控制系统,不知何故我似乎无法解决这个问题而且我不知道在svn文档中查看的位置。基本上,修订版167工作得很好,但我犯了一个错误,并将其作为修订版168(并且我不确定错误的确切位置)。我运行svn update -r 167
然后svn revert
将我的工作副本恢复到修订版167,一切都恢复正常。现在,我想从这里开始 - 即对这个工作副本进行一些小改动并将其作为修订版169提交,完全忽略了我在修订版168上所做的一切。
我该怎么做?当我尝试提交时,togoise svn给我一个错误,说我需要在我提交之前更新我的工作副本,显然这不是我想要的,因为它会让我回到修订版168.
感谢您的帮助!
答案 0 :(得分:10)
svn merge -r 168:167
svn ci -m "removing changes from r168"
http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo - 在这里你可以详细了解这项技术。
正如DavidRodríguez - dribeas 所提到的,你应该从HEAD
修订开始。因此,在我建议的命令之前执行svn up
。
答案 1 :(得分:4)
在Subversion中,您实际上无法删除已经提交的内容。我的建议是您将工作副本更新到最新版本,然后打开“SVN Show Log”对话框。进入后,单击错误的修订版本,然后选择“从此修订版还原更改”上下文菜单。尽管名称不同,但它不是revert
操作(在Subversion中还原意味着删除未提交的本地更改)。 TortoiseSVN将使用反向合并操作撤消本地副本中的更改。检查一切正常,然后提交。
答案 2 :(得分:1)
如果你正在使用乌龟,你可以使用看看如何恢复你的提交here。否则,zerkms的命令行命令应该可以解决问题。
答案 3 :(得分:1)
请阅读标题为Roll back (Undo) revisions in the repository的TortoiseSVN文档部分。您还可以使用TortoiseSVN上下文菜单中的“帮助”项访问此文档。