diff --git a/mercurial/merge.py b/mercurial/merge.py
index bfe89d65d651c9b83a15164e36c738c613b12666_bWVyY3VyaWFsL21lcmdlLnB5..774e2dcd0a65129f23260c0eae4a855b6bb7ed12_bWVyY3VyaWFsL21lcmdlLnB5 100644
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -577,7 +577,8 @@
         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
index bfe89d65d651c9b83a15164e36c738c613b12666_dGVzdHMvdGVzdC1jYXNlY29sbGlzaW9uLW1lcmdlLnQ=..774e2dcd0a65129f23260c0eae4a855b6bb7ed12_dGVzdHMvdGVzdC1jYXNlY29sbGlzaW9uLW1lcmdlLnQ= 100644
--- a/tests/test-casecollision-merge.t
+++ b/tests/test-casecollision-merge.t
@@ -143,6 +143,5 @@
   $ 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'
@@ -148,3 +147,3 @@
   $ hg parents --template '{rev}\n'
-  2
+  0
   $ hg status -A
@@ -150,3 +149,3 @@
   $ hg status -A
-  C A
+  C a
   $ cat A
@@ -152,5 +151,6 @@
   $ cat A
-  A
+  a
+  $ hg up -qC 2
 
   $ hg update --check 0
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved