diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -577,7 +577,8 @@ def update(repo, node, branchmerge, forc
         folding = not util.checkcase(repo.path)
         if folding:
             # collision check is not needed for clean update
-            if not branchmerge and force:
+            if (not branchmerge and
+                (force or not wc.dirty(missing=True, branch=False))):
                 _checkcollision(p2, None)
             else:
                 _checkcollision(p2, wc)
diff --git a/tests/test-casecollision-merge.t b/tests/test-casecollision-merge.t
--- a/tests/test-casecollision-merge.t
+++ b/tests/test-casecollision-merge.t
@@ -143,14 +143,14 @@ test for rename awareness of case-foldin
   $ hg commit -m '#2'
 
   $ hg update 0
-  abort: case-folding collision between a and A
-  [255]
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
   $ hg parents --template '{rev}\n'
-  2
+  0
   $ hg status -A
-  C A
+  C a
   $ cat A
-  A
+  a
+  $ hg up -qC 2
 
   $ hg update --check 0
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved