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

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

我主要寻找一种通过 Eclipse 插件(Subclipse 或 Subversive)来完成此操作的方法,但命令行命令也很有趣。

有帮助吗?

解决方案

您有两种选择来执行此操作。

快速和肮脏的是选择你的文件(使用 控制键)在 Project Explorer 视图中,右键单击它们,选择 Replace with... 然后您从其中选择最适合您的选项 Latest from Repository, ,或一些 Branch 版本。获取这些文件后,您可以修改它们(使用空格或修复某些内容,您可以调用并提交它们以创建更新的修订版)。

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

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

其他提示

在 Eclipse Ganymede (Subclipse) 中

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

团队 -> 显示历史

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

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

恢复修订版 X 的更改

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

这里有两种情况:

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

  2. 如果您对该文件提交了一些更改(错误修订版不是该文件的最后修订版),您将必须手动解决冲突。假设您有文件 readme.txt,错误的修订号是 33。此外,您已在修订版 34 中对该文件进行了另一次提交。当你选择之后 恢复修订版 33 中的更改 您的工作副本中将包含以下内容:

readme.txt.merge-left.r33 - 糟糕的修改

readme.txt.merge-right.r32 - 在糟糕的修改之前

自述文件.txt.工作 - 工作副本版本(如果没有任何未提交的更改,则与 r34 中的版本相同)

原始 readme.txt 将被标记为冲突,并将包含带有一些标记(<<<<<<< .working 等)的合并版本(其中删除了不良版本的更改)。如果您只想删除错误修订中的更改并保留之后所做的更改,那么您所要做的就是删除标记。否则,您可以将上述 3 个文件之一的内容复制到原始文件。无论您选择什么,完成后,将冲突标记为已解决

团队 - 马克解决

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

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

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

在“历史记录”视图中,找到该文件的最后一个正确版本,右键单击并选择“获取内容”。这会将您当前的版本替换为该版本的内容。然后,当您修复完所有问题后,就可以提交更改。

在 Eclipse 中使用 Subversive:

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

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

像平常一样合并。

我已经写了几篇关于这个主题的博客文章。一个以 Subclipse 为中心的: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html 以及一个以命令行为中心的: http://blogs.collab.net/subversion/2007/07/second-chances/

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

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

我不太使用 Eclipse,但在 TortoiseSVN 中,您可以通过日志对话框执行此操作;只需右键单击要恢复的修订版本,然后选择“恢复此修订版本的更改”即可。

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

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

1)安装TortoiseSVN
2) 转到 Windows 资源管理器并右键单击您的项目目录
3 选择CleanUp选项(通过勾选break lock选项)

其作品。

希望这对某人有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top