使用 Subversion 回滚更改集的最佳方法是啥?
Posted
技术标签:
【中文标题】使用 Subversion 回滚更改集的最佳方法是啥?【英文标题】:What is the best way to roll-back a change set using Subversion?使用 Subversion 回滚更改集的最佳方法是什么? 【发布时间】:2008-10-16 20:49:20 【问题描述】:我一直在使用各种源代码控制系统,但在恢复更改方面我还不是专家。鉴于这种情况,有人可以帮忙吗:
场景
鉴于修订版 #5 中引入了一个错误 修订版 #5 中更改了 3 个文件 2 个文件中的更改是导致该错误的原因 当客户发现修订版 #9 (HEAD) 版本中的错误时 然后必须将导致修订版 #5 中的错误的 2 个文件恢复到修订版 #4 从修订 #6 到 HEAD 的更改必须应用于这两个文件我希望必须有一种方法来比较两个文件的修订 #4 和 #5,并生成一个补丁来撤消修订 #5 中的更改,然后可以将其应用于 HEAD 修订以回滚缺陷.
【问题讨论】:
了解您使用的是哪个 svn 客户端会很有帮助。是命令行 svn 吗? 【参考方案1】:通常reverse merge 足以回滚已提交的更改...
【讨论】:
【参考方案2】:要了解详细信息,请参阅: svn manual - Undoing Changes
正如马克所描述的,你会想要做: svn 合并 -r 5:4 文件 1 文件 2 这意味着向后合并从 4 到 5 的变化,即。撤消更改
您也可以输入: svn 合并 -c -5 文件 1 文件 2 这意味着应用在向后提交修订版 5 时发生的更改。
接下来您应该手动查看更改。
最后,您必须提交更改(以上合并仅更改了您的工作副本)。
【讨论】:
【参考方案3】:这是一本link to svn 的书,解释了所有关于还原和历史的信息。
要进行 diff,您可以执行 svn diff -r 4:5 somefile.txt 之类的操作
【讨论】:
非常好,这正是我想要的。谢谢。【参考方案4】:我假设您在我的回答中使用 TortoiseSVN。
我认为您的方案不会导致文件回滚,因为您仍然希望保留每个文件的历史记录。大多数时候,您要做的只是找到并修复错误,然后对该文件提交新的更改。
如果你想比较两个版本,在tortoiseSvn中很容易,右键单击文件,然后进入TortoiseSvn->显示日志。然后选择要比较的两个版本,右键单击然后比较版本。
如果你想找出 bug 的负责人,你可以使用 TortoiseSVN 中的 Blame 菜单项...这会让你知道是谁修改了每一行以及在哪个修订版本。
哦,如果您想将文件恢复到以前的版本,您可以在 TortoiseSvn->Show Log 中执行此操作,然后选择要恢复到的版本,右键单击并选择 Revert to this revision。
【讨论】:
【参考方案5】:我会选择 EtienneT 的回答。但是在“恢复到这个版本”下面,还有一个选项“恢复这个版本的更改”。该选项将完全符合 Robert Walker 撤消修订版 #5 的更改的需要。不要忘记提交更改。
【讨论】:
【参考方案6】:查看当前版本,然后 svn 合并 -r 5:4 文件 1 文件 2 (凭记忆,可能不完全正确)
【讨论】:
【参考方案7】:我认为你需要先在 5:4 之间反向合并,然后恢复正确的文件
svn merge -r 5:5 http://svn.example.com/repos/calc/trunk
svn 恢复正确的文件
您可能最终会在 2buggy 文件中处于奇怪的状态 希望您可以手动解决。
【讨论】:
【参考方案8】:如果您使用的是http://tortoisesvn.tigris.org/,那么这是一个相当简单的过程。只需右键单击文件并选择“日志”以获取从现在到选定的恢复之间的更改列表。然后就是将这两个文件恢复到修订版 #4 并提交更改 :)
【讨论】:
以上是关于使用 Subversion 回滚更改集的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章