SVN:撤消与本地更改的合并

时间:2015-10-09 19:33:00

标签: linux svn version-control

我在版本100上,有本地更改。

我做了一个svn达到HEAD(这是修订版200)。然后,我被建议恢复到修订版150,我的本地更改,在命令中:svn merge -r HEAD:150 .

现在我真的希望通过本地更改返回到修订版200。 svn up并没有做任何事情,因为我似乎仍然有文件缺失。我知道因为文件A.cpp在修订版200中但不在我的本地工作副本中。

如果我做svn状态,我会看到一个古怪的" D"在A.cpp面前。他们似乎认为我想删除这个我甚至不拥有的文件。

我现在处于什么状态,我该如何解决?

1 个答案:

答案 0 :(得分:0)

简而言之,您当前检出的仓库已经搞砸了 - 它结合了您的更改以及一组未提交的更改,以便从HEAD返回 - > R150。如果您在此时提交,则会删除150:HEAD中发生的所有更改,然后添加更改。

如果尝试重新合并:svn merge -r 150:HEAD .无法正常工作(通常会赢得),那么我建议如下:

  • 假设您拥有当前的工作区<currws>
  • 检查工作区的第二个副本,修订版150: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在这种情况下应该有效。

验证所有内容是否有效,并且只包含您的更改。

制作补丁文件,检查代码然后提交。

我很确定这会让你回到正轨;虽然我没有一棵树可以检查我所拥有的网络连接。