82

假设我对 Subversion 存储库进行了一些错误的更改。然后我提交了我想要保留的好的更改。

在 Eclipse 中回滚那些不好的更改并保留好的更改最简单的方法是什么?假设与不良更改有关的文件与与良好更改有关的文件不同。如果对相同的文件进行好的更改作为坏的更改,情况会如何变化?

我主要是通过 Eclipse 插件(Subclipse 或 Subversive)寻找一种方法,但命令行命令也很有趣。

4

7 回答 7

80

在 Eclipse Ganymede 中(Subclipse)

选择包含错误更改的项目/文件,然后从弹出菜单中选择:

团队 -> 显示历史

与该项目/文件相关的修订将显示在历史选项卡中。

查找提交“错误更改”的修订版,然后从弹出菜单中选择:

还原版本 X 的更改

这会将在错误修订中修改的文件中的更改与错误修订之前的修订合并。

这里有两种情况:

  1. 如果您没有对该文件提交任何更改(错误修订是该文件的最后修订),它只会删除在错误修订中所做的更改。这些更改将合并到您的工作副本中,因此您必须提交它们。

  2. 如果您对该文件提交了一些更改(错误的修订不是该文件的最后修订),您将不得不手动解决冲突。假设您有文件 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 将被标记为冲突,并且将包含带有一些标记(<<<<<<< .working 等)的合并版本(从错误修订中删除的更改被删除)。如果您只想从错误的修订中删除更改并保留之后所做的更改,那么您所要做的就是删除标记。否则,您可以将上述 3 个文件之一的内容复制到原始文件。无论您选择什么,完成后,将冲突标记为已解决

团队 - 标记已解决

临时文件将被删除,您的文件将被标记为已更改。与 1 一样,您必须提交更改。

请注意,这不会从 svn 存储库中的修订历史记录中删除修订。您只需进行新的修订,从错误修订的更改被删除。

于 2008-09-15T14:06:08.187 回答
30

你有两个选择来做到这一点。

Quick and Dirty 是ctrl在 Project Explorer 视图中选择您的文件(使用 ),右键单击它们,选择Replace with...,然后选择最适合您的选项,从Latest from Repository或某个Branch版本。获得这些文件后,您可以修改它们(使用空格或修复某些内容,调用并提交它们以创建更新的修订版。

一种更简洁的方法是Merge在团队菜单中选择并浏览向导,这将帮助您在实际修订中恢复旧版本。

这两个命令都有它们的命令行等效项:svn revertsvn merge.

于 2008-08-30T15:54:19.717 回答
14

如果您想一次处理 1 个文件,假设您安装了 Eclipse SVN 插件,您可以转到该文件的 History 视图。“团队->显示历史”

在历史视图中,找到该文件的最后一个好版本,右键单击并选择“获取内容”。这将用该版本的内容替换您当前的版本。然后,您可以在全部修复后提交更改。

于 2008-09-22T19:37:36.947 回答
6

在使用颠覆性的 Eclipse 中:

右键单击您的项目>团队>合并

在合并窗口中,选择您想要正常恢复的修订,同时启用复选框“反向合并”。

像往常一样合并。

于 2010-11-05T12:59:07.597 回答
5

我已经写了几篇关于这个主题的博客文章。一种以 Subclipse 为中心:http: //markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html一种以命令行为中心:http://blogs.collab。网络/颠覆/2007/07/第二次机会/

于 2008-09-15T13:29:19.413 回答
1

svnbook 有一节介绍 Subversion 如何允许您从特定修订版还原更改而不影响后续修订版中发生的更改:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

我很少使用 Eclipse,但在 TortoiseSVN 中,您可以从日志对话框中执行此操作;只需右键单击要还原的修订并选择“从该修订还原更改”。

如果您要恢复“不良更改”的文件在后续修订中具有“良好更改”,则过程相同。“坏”修订版的更改将被还原,而“好”修订版的更改不会受到影响,但是您可能会遇到冲突。

于 2008-08-30T20:30:50.847 回答
0

我有同样的问题,但 CleanUp eclipse 选项对我不起作用。

1) 安装 TortoiseSVN
2) 转到 Windows 资源管理器并右键单击您的项目目录
3 选择 CleanUp 选项(通过检查中断锁定选项)

其作品。

希望这可以帮助某人。

于 2016-10-24T09:15:47.233 回答