我正在使用SVN,我已经更新了我的项目。
偶然地,我选择了“保持我的”。而不是“保持他们的'在解决冲突时 然后,我尝试手动恢复更改,但这不起作用,现在文件处于错误状态。
如何重做更新? 我可以在更新之前恢复到我的状态,然后再次更新吗?
答案 0 :(得分:1)
如果我正确理解您,那么您的文件包含本地更改(未提交)和一些上游更改(合并到您的工作副本,但未提交回repo)的混合。如果情况确实如此,那么很遗憾不是一个简单的出路。使用svn revert
会消除所有未提交的更改,而这可能不是您想要的。这是我尝试恢复原始文件的方法。
首先,在尝试其他任何操作之前,先制作文件的备份副本。这应该可以防止进一步的数据丢失。
现在,获取该文件的三个不同版本的副本:您当前的副本,存储库中的修订版以及您尝试合并的修订版。您将必须使用这三个文件之间的差异来识别哪些更改在您的工作副本中是您的本地更改以及哪些是合并的更改。可以执行三向差异的图形实用程序在这里很有用,但是如果你没有,你也可以使用原始版本和本地版本之间以及原始版本和合并版本之间的双向差异。版。我们的想法是识别您的本地更改,然后将它们手工合并到文件的新副本中。由于合并,您的某些本地更改可能已丢失或更改,因此您可能不得不重新创建一些内容(希望不会太多)。
这是一个手动过程,但它可能是您能够做到的最好的过程。您的成功程度可能取决于您本地更改的范围以及这些本地更改与合并更改重叠的程度。为了避免将来这种情况,我建议只在工作副本中没有本地更改时才进行合并。如果无法避免这种情况,那么您可以在合并之前执行svn diff
以保存本地更改的补丁,从而为您提供在需要时返回合并前状态的方法({{ 1}}然后应用补丁)。