svn:如何撤消一个合并(没有提交)?

我只是做了一个svn merge合并更改从树干到一个分支:

 $ svn merge -r328:HEAD file:///home/user/svn/repos/proj/trunk . --- Merging r388 through r500 into '.': A foo A bar C baz1 C baz2 U duh [...] 

但冲突太多了,所以我想撤销这个。

一种方法是提交然后合并回来。 但是由于冲突我不能犯。 在这种情况下撤消的最好方法是什么?

从您的工作副本的顶部recursion地恢复:

svn revert -R .

您将需要手动删除已添加的文件。 如在还原之后,添加的文件将保留在磁盘上,但是它们将处于未跟踪状态(“?foo”)

只要你没有提交,你总是可以恢复撤消所有的更改。

我面临同样的情况,也有一些我不想失去的其他变化。 所以,而不是完整的recursion还原只是svn revert冲突的项目是对我有好处

 svn revert baz1 baz2 

只要做到svn resolve所有的冲突,并承诺:

 $ svn resolved baz1 $ svn resolved baz2 $ svn ci -m "oops. bad merge. will revert." Transmitting file data ...... Committed revision 501. 

然后,通过合并回到原来的位置,正式撤消它:

 $ svn merge -r501:500 --- Reverse-merging r319 into '.': [...] 

就是这样,目录中的合并已经被撤消。 现在也承诺:

 $ svn ci -m "bad merge has been undone" Transmitting file data ...... Committed revision 502. 

svn revert -R .的优势svn revert -R . 方法是将所添加的文件全部删除。