在Eclipse中使用SVN回滚错误的更改

在Eclipse中使用SVN回滚错误的更改

Rolling back bad changes with svn in Eclipse

假设我已经对Subversion存储库进行了一些错误的更改。 然后我做出一些我想保留的好的更改。

在Eclipse中回滚这些不良更改并保留良好更改的最简单方法是什么? 假定与不良更改相关的文件与与不良更改相关的文件不同。 如果对相同的文件进行了良好的更改,而对不良的更改进行了更改,那么事情将如何改变?

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


在Eclipse Ganymede(Subclipse)中

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

团队->显示历史

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

查找提交了"重大更改"的修订,然后从弹出菜单中选择:

从修订版X还原更改

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

这里有两种情况:

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

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

  • readme.txt.merge-left.r33-不良修订

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

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

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

    团队-马克解决

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

    请注意,这不会从svn信息库的修订历史记录中删除修订。您只需进行新修订,即可删除不良修订中的更改。


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

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

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

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


    如果您想一次创建1个文件,则可以在已安装Eclipse SVN插件的情况下转到文件的"历史记录"视图。"团队->显示历史记录"

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


    在使用Subversive的Eclipse中:

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

    在合并窗口中,选择要照常还原的修订,但还要启用"反向合并"复选框。

    正常合并。


    我已经写了几个关于这个主题的博客文章。一种以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选择清理选项(通过选中中断锁定选项)

    其作品。

    希望这对某人有帮助。


    推荐阅读