在 Eclipse 中使用 svn 回滚错误的更改
Posted
技术标签:
【中文标题】在 Eclipse 中使用 svn 回滚错误的更改【英文标题】:Rolling back bad changes with svn in Eclipse 【发布时间】:2010-09-07 08:25:21 【问题描述】:假设我对 Subversion 存储库进行了一些错误的更改。然后我提交了我想要保留的好的更改。
在 Eclipse 中回滚那些不好的更改并保留好的更改的最简单方法是什么?假设与不良更改有关的文件与与良好更改有关的文件不同。如果对相同的文件进行好的更改与坏的更改一样,情况会如何变化?
我主要是通过 Eclipse 插件(Subclipse 或 Subversive)寻找一种方法,但命令行命令也很有趣。
【问题讨论】:
【参考方案1】:在 Eclipse Ganymede(子剪辑)中
选择包含错误更改的项目/文件,然后从弹出菜单中选择:
团队 -> 显示历史
与该项目/文件相关的修订将显示在“历史记录”选项卡中。
查找提交“错误更改”的修订并从弹出菜单中选择:
还原版本 X 的更改
这会将在错误修订中修改的文件中的更改与错误修订之前的修订合并。
这里有两种情况:
如果您没有对该文件提交任何更改(错误修订是该文件的最后一个修订),它只会删除在错误修订中所做的更改。这些更改会合并到您的工作副本中,因此您必须提交它们。
如果您为该文件提交了一些更改(错误的修订不是该文件的最后修订),您将不得不手动解决冲突。假设您有文件 readme.txt,错误的修订号是 33。此外,您在修订版 34 中对该文件进行了另一次提交。选择 Revert Changes from Revision 33 后,您将在您的工作副本中包含以下内容:
readme.txt.merge-left.r33 - 错误修订
readme.txt.merge-right.r32 - 错误修订之前
readme.txt.working - 工作副本版本(如果您没有任何未提交的更改,则与 r34 相同)
原始的 readme.txt 将被标记为冲突,并且将包含带有一些标记(
团队 - 标记已解决
临时文件将被删除,您的文件将被标记为已更改。与 1 一样,您必须提交更改。
请注意,这不会从 svn 存储库的修订历史记录中删除修订。您只需进行新的修订,将错误修订的更改删除即可。
【讨论】:
【参考方案2】:您有两种选择。
Quick and Dirty 是在 Project Explorer 视图中选择您的文件(使用 ctrl),右键单击它们,选择 Replace with...
,然后从 Latest from Repository
中选择最适合您的选项,或一些Branch
版本。获取这些文件后,您修改它们(使用空格或修复某些内容,调用并提交它们以创建更新的修订版。
更简洁的方法是在团队菜单中选择Merge
并浏览向导,这将帮助您在实际修订中恢复旧版本。
这两个命令都有对应的命令行:svn revert
和 svn merge
。
【讨论】:
最新来自存储库的是错误签入的,所以我看不出它应该在哪里有帮助。除此之外,eclipse 不想帮助您解决这个问题,因为如果您选择多个文件(可能是因为它们的最新版本不同),则只有提及选项可用。【参考方案3】:如果您想一次处理 1 个文件,假设您安装了 Eclipse SVN 插件,您可以转到该文件的历史记录视图。 “团队->显示历史”
在历史视图中,找到该文件的最后一个好版本,右键单击并选择“获取内容”。这将用该版本的内容替换您当前的版本。然后,您可以在全部修复后提交更改。
【讨论】:
【参考方案4】:在 Eclipse 中使用 Subversive:
右键单击您的项目>团队>合并
在合并窗口中,选择您要正常还原的修订,同时启用复选框“反向合并”。
正常合并。
【讨论】:
【参考方案5】:我已经写了几篇关于这个主题的博客文章。一种以 Subclipse 为中心:http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html,一种以命令行为中心:http://blogs.collab.net/subversion/2007/07/second-chances/
【讨论】:
【参考方案6】:svnbook 有一节介绍 Subversion 如何允许您从特定修订版还原更改而不影响后续修订版中发生的更改:
http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo
我很少使用 Eclipse,但在 TortoiseSVN 中,您可以从日志对话框中执行此操作;只需右键单击要还原的修订,然后选择“从该修订还原更改”。
如果您要恢复“不良更改”的文件在后续修订中具有“良好更改”,则过程相同。 “坏”修订版的更改将被还原,而“好”修订版的更改保持不变,但是您可能会遇到冲突。
【讨论】:
【参考方案7】:我有同样的问题,但 CleanUp eclipse 选项对我不起作用。
1) 安装 TortoiseSVN 2)转到Windows资源管理器并右键单击您的项目目录 3 选择清理选项(通过检查中断锁定选项)
它的作品。
希望这对某人有所帮助。
【讨论】:
以上是关于在 Eclipse 中使用 svn 回滚错误的更改的主要内容,如果未能解决你的问题,请参考以下文章