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

时间:2020-03-05 18:45:26  来源:igfitidea点击:

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

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

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

解决方案

回答

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

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

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

这两个命令都有等效的命令行:svn revert和svn merge。

回答

svnbook的一节介绍了Subversion如何允许我们从特定修订版本还原更改,而又不影响后续修订版本中发生的更改:

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

我使用的Eclipse很少,但是在TortoiseSVN中,我们可以通过日志对话框中的来执行此操作。只需右键单击要还原的修订,然后选择"还原此修订的更改"。

如果我们要还原其"不良更改"的文件在后续版本中具有"良好更改",则过程相同。 "不良"修订的更改将被还原,而"良好"修订的更改将保持不变,但是我们可能会遇到冲突。

回答

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

回答

在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信息库的修订历史记录中删除修订。我们只需进行新修订,即可删除不良修订中的更改。

回答

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

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

回答

在使用Subversive的Eclipse中:

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

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

正常合并。