Index: src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 14860)
+++ src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(working copy)
@@ -24,6 +24,7 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.RelationToChildReference;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 
 /**
@@ -181,6 +182,19 @@
         }
         this.relations = relations;
         this.primitives = memberPrimitives;
+        // #17422 : avoid to show the conflict dialog when a new way is a simple replacement for an existing one
+        if (memberPrimitives.size() == 2 && memberPrimitives.stream().allMatch(Way.class::isInstance)) {
+            Iterator<? extends OsmPrimitive> iter = memberPrimitives.iterator();
+            Way w1 = (Way) iter.next();
+            Way w2 = (Way) iter.next();
+            if ((w1.isNew() || w2.isNew()) && w1.getNodesCount() > 1 && w2.getNodesCount() > 1
+                    && w1.firstNode() == w2.firstNode() && w1.lastNode() == w2.lastNode()) {
+                // new way is simple replacement for old way
+                for (RelationMemberConflictDecision decision : decisions) {
+                    decision.decide(RelationMemberConflictDecisionType.KEEP);
+                }
+            }
+        }
         refresh(fireEvent);
     }
 
