假设我已经对Subversion存储库进行了一些糟糕的更改。然后我会做出好的改变,我想保留这些改变。
在Eclipse中回滚那些糟糕的更改并保留好的更改最简单的方法是什么?假设与坏更改相关的文件与与与好更改相关的那些文件不同。如果对相同的文件进行了好的更改,而对文件进行了坏的更改,情况会发生什么变化?
我主要是想通过Eclipse插件(Subclipse或Subversive)来实现这一点,但命令行命令也很有趣。
假设我已经对Subversion存储库进行了一些糟糕的更改。然后我会做出好的改变,我想保留这些改变。
在Eclipse中回滚那些糟糕的更改并保留好的更改最简单的方法是什么?假设与坏更改相关的文件与与与好更改相关的那些文件不同。如果对相同的文件进行了好的更改,而对文件进行了坏的更改,情况会发生什么变化?
我主要是想通过Eclipse插件(Subclipse或Subversive)来实现这一点,但命令行命令也很有趣。
你有两个选择。
Quick and Dirty在Project Explorer视图中选择您的文件(使用ctrl),右键单击它们,选择替换为
,然后从最新存储库
或某些分支
版本中选择最适合您的选项。获得这些文件后,您可以修改它们(使用空格或修复某些内容),然后调用并提交它们以创建新的修订版。
更干净的方法是在团队菜单中选择合并
,并浏览向导,该向导将帮助您恢复实际修订版中的旧版本。
这两个命令都有其等效的命令行:<code>svn revert</code>和<code>svn merge</code>。
在月食木卫三中(Subclipse)
选择包含错误更改的项目/文件,然后从弹出菜单中选择:
团队->;显示历史记录
与该项目/文件相关的修订将显示在“历史记录”选项卡中。
查找提交“错误更改”的修订版,然后从弹出菜单中选择:
从修订版X还原更改
这将合并在错误修订内修改的文件中的更改,以及在错误修订之前的修订。
这里有两种情况:
如果您没有提交对该文件的更改(坏版本是该文件的最后一个版本),它只会删除在坏版本中所做的更改。这些更改将合并到您的工作副本中,因此您必须提交它们。
如果您提交了该文件的一些更改(坏的修订版不是该文件的最后一个修订版),则必须手动解决冲突。假设您有readme.txt文件,错误的修订号是33。此外,您已经在修订版34中对该文件进行了另一次提交。选择从修订版33还原更改后,您的工作副本中将包含以下内容:
自述文件.txt.merge left.r33-修订不正确
自述文件.txt.merge right.r32-修订不正确之前
readme.txt.工作-工作副本版本(如果没有任何未提交的更改,则与r34中的版本相同)
原始readme.txt将被标记为冲突,并将包含合并版本(删除了来自坏修订的更改)和一些标记(<;<;<;<,<;工作等)。如果你只想从坏的修订中删除更改并保留之后所做的更改,那么你所要做的就是删除标记。否则,您可以将上述三个文件之一的内容复制到原始文件中。无论你选择什么,当你完成时,标记冲突通过
团队-标记已解决
临时文件将被删除,您的文件将被标记为已更改。与1中一样,您必须提交更改。
请注意,这不会从svn存储库中的修订历史记录中删除修订。您只需进行新的修订,就可以删除坏修订中的更改。
如果您想一次处理一个文件,那么可以转到该文件的History视图,假设您安装了Eclipse SVN插件。“团队->;显示历史记录”
在“历史记录”视图中,找到该文件的最后一个好版本,右键单击并选择“获取内容”。这将用当前版本的内容替换当前版本。然后,当你把它全部修复好后,你就可以提交更改了。
在Eclipse中使用颠覆:
右键单击您的项目>;团队>;合并
在合并窗口中,选择要恢复正常的修订,但也要启用复选框“反向合并”。
正常合并。
我已经写了几篇关于这个主题的博客文章。一个以次clipse为中心的: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) install TortoiseSVN
2) Go to windows explorer and right click on your project directory
3 Choice CleanUp option (by checking break lock option)
它是有效的。
希望这能帮助到别人。