在 Eclipse 中使用 svn 回滚糟糕的更改

假设我已经向 Subversion 存储库提交了一些糟糕的更改。然后我承诺好的改变,我想保持。

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

我主要是通过 Eclipse 插件(Subclise 或 Subversive)来寻找实现这一点的方法,但命令行命令也很有趣。

103881 次浏览

你有两个选择。

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

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

这两个命令都有它们的命令行等价物: svn revertsvn merge

Svnbook 中有一节介绍 Subversion 如何允许您在不影响后续修订中发生的更改的情况下恢复特定修订中的更改:

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

我不经常使用 Eclipse,但是在 TortoiseSVN 中,您可以从日志对话框中进行此操作; 只需右键单击您想要恢复的修订,然后选择“从此修订中恢复更改”。

如果您希望恢复“坏变更”的文件在后续修订中有“好变更”,那么过程是相同的。来自“坏”修订的更改将被恢复,而来自“好”修订的更改将保持不变,但是您可能会遇到冲突。

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

在 Ganymede (Subclise)

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

队伍-> 展览历史

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

从弹出式菜单中找到提交了“错误更改”的修订,选择:

从修订版 X 恢复更改

这将合并在错误修订中修改的文件中的更改,在错误修订之前进行修订。

接下来有两种情况:

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

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

Merge-left. r33 -无法修订

Merge-right. r32 -在错误修订之前

Working -working copy version (如果没有任何未提交的更改,则与 r34中的版本相同)

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

团队标记已解决

临时文件将被删除,您的文件将被标记为更改。

注意,这并不会从 svn 存储库的修订历史中删除修订。您只是进行了新的修订,删除了来自不良修订的更改。

如果您希望一次处理一个文件,那么您可以转到文件的 History 视图,前提是您已经安装了 Eclipse SVN 插件。「队伍-> 表演历史」

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

在 Eclipse 中使用 Subversive:

右键单击您的项目 > Team > Merge

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

正常合并。

我有同样的问题,但清理日食选项不适合我。

1)安装 TortoiseSVN
2)进入文件资源管理器,右键点击你的项目目录
3 Choice CleanUp 选项(通过检查 break lock 选项) < br >

这是工作。

希望这对谁有帮助。