我在版本100上,有本地更改。
我做了一个svn达到HEAD(这是修订版200)。然后,我被建议恢复到修订版150,我的本地更改,在命令中:svn merge -r HEAD:150 .
现在我真的希望通过本地更改返回到修订版200。 svn up并没有做任何事情,因为我似乎仍然有文件缺失。我知道因为文件A.cpp在修订版200中但不在我的本地工作副本中。
如果我做svn状态,我会看到一个古怪的" D"在A.cpp面前。他们似乎认为我想删除这个我甚至不拥有的文件。
我现在处于什么状态,我该如何解决?
答案 0 :(得分:0)
简而言之,您当前检出的仓库已经搞砸了 - 它结合了您的更改以及一组未提交的更改,以便从HEAD返回 - > R150。如果您在此时提交,则会删除150:HEAD中发生的所有更改,然后添加更改。
如果尝试重新合并:svn merge -r 150:HEAD .
无法正常工作(通常会赢得),那么我建议如下:
<currws>
svn co -r 150 <svn url> <newws>
。这将为您提供目录<newws>
(cd <currws>; tar cf - --exclude .svn .) | (cd <newws>; tar xf -)
。这将采取所有文件&amp;来自<currws>
的目录并将其复制到<newws>
。记录新目录 - 它现在应该只包含您的更改的副本 - 其中一些可能需要将SVN添加到工作区;或者如果您有删除,则需要在<newws>
上重新删除它们。您可以在tar之前从new-ws中删除所有文件/文件夹,并且使用!
在tar之后显示的任何内容都表示您随更改删除的文件,任何带有{{1}的文件}是需要添加的文件,其余部分应为?
个条目。
将新工作区添加到HEAD - M
在这种情况下应该有效。
验证所有内容是否有效,并且只包含您的更改。
制作补丁文件,检查代码然后提交。
我很确定这会让你回到正轨;虽然我没有一棵树可以检查我所拥有的网络连接。