我只是做了一个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
[...]
但是冲突太多了,所以我想撤消这个。
一种方法是提交然后合并。但由于冲突我无法承诺。在这种情况下撤消的最佳方法是什么?
答案 0 :(得分:107)
从工作副本的顶部递归还原:
svn revert -R .
您需要手动删除已添加的文件。在恢复之后,添加的文件将保留在磁盘上,但它们将处于非跟踪状态(“?foo”)
答案 1 :(得分:6)
只要您没有提交,您就可以随时恢复以撤消所有更改。
答案 2 :(得分:2)
我遇到了同样的情况,我还有其他一些我不想失去的变化。
因此,对于冲突的项目而言,只有svn revert
而不是完全递归还原对我来说是好的
svn revert baz1 baz2
答案 3 :(得分:-11)
无论如何都要对所有冲突做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 .
方法的优势在于添加的文件都已正确删除。