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

时间:2008-08-30 14:22:55

标签: eclipse svn subclipse subversive

假设我已经对Subversion存储库进行了一些不好的更改。然后我做了很好的改变,我想保留。

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

我主要想通过Eclipse插件(Subclipse或Subversive)来做到这一点,但命令行命令也很有趣。

7 个答案:

答案 0 :(得分:76)

在Eclipse Ganymede(Subclipse)中

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

团队 - >显示历史

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

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

还原版本X的更改

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

此处有两种情况:

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

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

  3. readme.txt.merge-left.r33 - 错误修订

    readme.txt.merge-right.r32 - 错误修订前

    readme.txt.working - 工作副本版本(如果您没有任何未提交的更改,则与r34相同)

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

    解决

    团队 - Mark Resolved

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

    请注意,这不会从svn存储库中的修订历史记录中删除修订版本。您只需创建新版本,其中删除了错误修订的更改。

答案 1 :(得分:29)

你有两种选择。

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

更简洁的方法是在团队菜单中选择Branch并浏览向导,以帮助您恢复实际版本中的旧版本。

两个命令都有相应的命令行:Mergesvn revert

答案 2 :(得分:12)

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

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

答案 3 :(得分:5)

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

答案 4 :(得分:5)

在Eclipse中使用Subversive:

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

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

正常合并。

答案 5 :(得分:1)

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

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

我没有太多使用Eclipse,但在TortoiseSVN中你可以从日志对话中做到这一点;只需右键单击要还原的修订版本,然后选择“还原此修订版本中的更改”。

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

答案 6 :(得分:0)

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

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

这是有效的。

希望这有助于某人。