Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 11683)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 11684)
@@ -13,4 +13,5 @@
 import java.util.TreeSet;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
 
 import javax.swing.DefaultListSelectionModel;
@@ -357,5 +358,6 @@
      */
     public void applyToRelation(Relation relation) {
-        relation.setMembers(members);
+        relation.setMembers(members.stream()
+                .filter(rm -> !rm.getMember().isDeleted()).collect(Collectors.toList()));
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 11683)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 11684)
@@ -105,6 +105,8 @@
         tagEditorModel.applyToPrimitive(editedRelation);
         memberTableModel.applyToRelation(editedRelation);
-        Main.main.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
-        layer.data.fireSelectionChanged();
+        if (!editedRelation.hasEqualSemanticAttributes(editor.getRelation(), false)) {
+            Main.main.undoRedo.add(new ChangeCommand(editor.getRelation(), editedRelation));
+            layer.data.fireSelectionChanged();
+        }
     }
 
