diff --git a/hgext/rebase.py b/hgext/rebase.py
index 1476ec96965f1f1f02846055bc06bfc2000dd305_aGdleHQvcmViYXNlLnB5..0ea08126a2af927542010c19e2e66b51774c3a27_aGdleHQvcmViYXNlLnB5 100644
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -1442,6 +1442,10 @@
     if b'branch' in extra:
         branch = extra[b'branch']
 
+    # FIXME: We call _compact() because it's required to correctly detect
+    # changed files. This was added to fix a regression shortly before the 5.5
+    # release. A proper fix will be done in the default branch.
+    wctx._compact()
     memctx = wctx.tomemctx(
         commitmsg,
         date=date,
diff --git a/tests/test-rebase-inmemory.t b/tests/test-rebase-inmemory.t
index 1476ec96965f1f1f02846055bc06bfc2000dd305_dGVzdHMvdGVzdC1yZWJhc2UtaW5tZW1vcnkudA==..0ea08126a2af927542010c19e2e66b51774c3a27_dGVzdHMvdGVzdC1yZWJhc2UtaW5tZW1vcnkudA== 100644
--- a/tests/test-rebase-inmemory.t
+++ b/tests/test-rebase-inmemory.t
@@ -963,3 +963,21 @@
   |/
   o  0: d20a80d4def3 'base'
   
+
+  $ cd ..
+
+Test (virtual) working directory without changes, created by merge conflict
+resolution. There was a regression where the file was incorrectly detected as
+changed although the file contents were the same as in the parent.
+
+  $ hg init nofilechanges
+  $ cd nofilechanges
+  $ echo a > a; hg add a; hg ci -m a
+  $ echo foo > test; hg add test; hg ci -m b
+  $ hg up 0 -q
+  $ echo bar > test; hg add test; hg ci -m c
+  created new head
+  $ hg rebase -d 2 -d 1 --tool :local
+  rebasing 2:ca2749322ee5 "c" (tip)
+  note: not rebasing 2:ca2749322ee5 "c" (tip), its destination already has all its changes
+  saved backup bundle to $TESTTMP/nofilechanges/.hg/strip-backup/ca2749322ee5-6dc7e94b-rebase.hg