假设我已经对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 etc).如果您只想从错误修订中删除更改并在此之后保留更改,那么您所要做的就是删除标记.否则,您可以将上述3个文件之一中的内容复制到原始文件中.无论你选择什么,当你完成后,标记冲突解决了
团队 - Mark Resolved
临时文件将被删除,您的文件将被标记为已更改.与1中一样,您必须提交更改.
请注意,这不会从svn存储库中的修订历史记录中删除修订.您只需创建新修订版,其中删除了错误修订版的更改.
你有两个选择.
Quick and Dirty是ctrl在Project Explorer视图中选择文件(使用),右键单击它们,选择Replace with...
然后为您Latest from Repository
,或某个Branch
版本选择最佳选项.获取这些文件后,您可以修改它们(使用空格,或修复某些内容,调用并提交它们以创建更新的版本).
更简洁的方法是选择Merge
团队菜单并浏览向导,以帮助您恢复实际修订版中的旧版本.
这两个命令都有它们的命令行等价物:svn revert
和svn merge
.
如果您想一次执行1个文件,则可以转到文件的"历史记录"视图,假设您已安装Eclipse SVN插件."团队 - >显示历史"
在"历史记录"视图中,找到该文件的最新版本,右键单击并选择"获取内容".这将使用该版本的内容替换您当前的版本.然后,您可以在修复所有更改后提交更改.
我写了几篇关于这个主题的博客文章.一个是Subclipse的中心的:http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html和一个是命令行中心的:HTTP://blogs.collab.净/颠覆/ 2007/07 /第二机会/
在使用Subversive的Eclipse中:
右键单击您的项目>团队>合并
在合并窗口中,选择要恢复为正常情况的修订,但也启用复选框"反向合并".
合并为正常.