How to undo a merge (without commit)?

SvnMergeCommitUndo

Svn Problem Overview


I just did an svn merge to merge changes from the trunk to a branch:

$ 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
[...]

But there were too many conflicts, so I'd like to undo that.

One way to do that is to commit and then merge back. But I can't commit because of the conflicts. What's the best way to undo in that case?

Svn Solutions


Solution 1 - Svn

Revert recursively from the top of your working copy:

svn revert -R .

You will need to manually delete the files that were added. As in after reverting, the files added will remain on disk but they will be in a non-tracked state ("? foo")

Solution 2 - Svn

As long as you haven't commited, you can always do a revert to undo all your changes.

Solution 3 - Svn

I faced the same situation, also I had some other changes which I didn't wanted to lose. So, instead of full recursive revert just svn revert for the conflicted items was good for me

svn revert baz1 baz2

Solution 4 - Svn

Just do svn resolve on all conflicts anyway and commit:

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

Then, officially undo it by merging back to where it was:

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

That's it, the merge has been undone in the directory. Now commit that too:

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

The advantage over the svn revert -R . method is that the files that were added are all properly removed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFrankView Question on Stackoverflow
Solution 1 - SvnrichqView Answer on Stackoverflow
Solution 2 - SvntangensView Answer on Stackoverflow
Solution 3 - SvnAmit ThawaitView Answer on Stackoverflow
Solution 4 - SvnFrankView Answer on Stackoverflow