我在两台不同的计算机(Mac)上拥有同一个存储库的工作副本。有一个文件(假设SomeFile.m
)在两个工作副本中都显示为 r703,没有本地修改。svn update SomeFile.m
在两边执行操作不会产生任何更新 - 它认为它与存储库完全同步。
但是,这两个文件是不同的。它们有不同的校验和,并且 diff 显示了对代码很重要的差异。该文件在其中一个工作副本中是正确的,但在另一个工作副本中不正确。
首先,如何强制用存储库中的内容替换错误的文件?
其次,这个文件一开始是怎么变成这种状态的?是通过错误的冲突解决还是类似的原因?
答案1
如果一个文件版本是正确的,但您怀疑存储库中的版本不正确,请参阅我如何强制颠覆提交未改变的文件?
如果你想强制从存储库获取文件,请参阅强制 svn checkout 命令覆盖当前文件。
否则,只需修改其中一个文件,将其作为新修订版保存到存储库,然后像上面一样在另一台计算机上重新检出。
答案2
我发现“强制”签出/更新特定文件的最简单方法是删除工作副本中的该文件 - 文件系统删除,不是 svn-delete
- 并运行工作副本的更新。该文件将使用 repo 中的版本恢复。
文件进入此状态的原因之一是它有一些未被注意到的本地修改。SVN 不会在没有解决冲突的情况下提交文件,因此它也不会更新。