Index: /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 9438)
+++ /trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java	(revision 9439)
@@ -124,4 +124,5 @@
         TagCollection wayTags = TagCollection.unionOfAllPrimitives(ways);
 
+        final List<Command> reverseWayTagCommands = new LinkedList<>();
         List<Way> reversedWays = new LinkedList<>();
         List<Way> unreversedWays = new LinkedList<>();
@@ -158,14 +159,12 @@
                 ReverseWayTagCorrector reverseWayTagCorrector = new ReverseWayTagCorrector();
                 List<Way> reversedTagWays = new ArrayList<>(reversedWays.size());
-                Collection<Command> changePropertyCommands =  null;
                 for (Way w : reversedWays) {
                     Way wnew = new Way(w);
                     reversedTagWays.add(wnew);
-                    changePropertyCommands = reverseWayTagCorrector.execute(w, wnew);
-                }
-                if ((changePropertyCommands != null) && !changePropertyCommands.isEmpty()) {
-                    for (Command c : changePropertyCommands) {
-                        c.executeCommand();
-                    }
+                    reverseWayTagCommands.addAll(reverseWayTagCorrector.execute(w, wnew));
+                }
+                if (!reverseWayTagCommands.isEmpty()) {
+                    // commands need to be executed for CombinePrimitiveResolverDialog
+                    Main.main.undoRedo.add(new SequenceCommand(tr("Reverse Ways"), reverseWayTagCommands));
                 }
                 wayTags = TagCollection.unionOfAllPrimitives(reversedTagWays);
@@ -180,5 +179,13 @@
         modifiedTargetWay.setNodes(path);
 
-        List<Command> resolution = CombinePrimitiveResolverDialog.launchIfNecessary(wayTags, ways, Collections.singleton(targetWay));
+        final List<Command> resolution;
+        try {
+            resolution = CombinePrimitiveResolverDialog.launchIfNecessary(wayTags, ways, Collections.singleton(targetWay));
+        } finally {
+            if (!reverseWayTagCommands.isEmpty()) {
+                // undo reverseWayTagCorrector and merge into SequenceCommand below
+                Main.main.undoRedo.undo();
+            }
+        }
 
         List<Command> cmds = new LinkedList<>();
@@ -187,4 +194,5 @@
 
         cmds.add(new ChangeCommand(targetWay, modifiedTargetWay));
+        cmds.addAll(reverseWayTagCommands);
         cmds.addAll(resolution);
         cmds.add(new DeleteCommand(deletedWays));
