diff --git a/hggit/git_handler.py b/hggit/git_handler.py
index 6aa31a3b0506247e054b99c3a92ff6e15bb3bad8_aGdnaXQvZ2l0X2hhbmRsZXIucHk=..3246f2fab6255fd875f4b86fd19bf4214a1c44ac_aGdnaXQvZ2l0X2hhbmRsZXIucHk= 100644
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -770,8 +770,11 @@
             else:
                 hgsubstate[path] = sha
         # in case .hgsubstate wasn't among changed files
-        # force its inclusion
-        if not hgsubstate and parentsubdata:
+        # force its inclusion if it wasn't already deleted
+        hgsubdeleted = files.get('.hgsubstate')
+        if hgsubdeleted:
+            hgsubdeleted = hgsubdeleted[0]
+        if hgsubdeleted or (not hgsubstate and parentsubdata):
             files['.hgsubstate'] = True, None, None
         elif util.serialize_hgsubstate(hgsubstate) != parentsubdata:
             files['.hgsubstate'] = False, 0100644, None
diff --git a/tests/test-clone.t b/tests/test-clone.t
index 6aa31a3b0506247e054b99c3a92ff6e15bb3bad8_dGVzdHMvdGVzdC1jbG9uZS50..3246f2fab6255fd875f4b86fd19bf4214a1c44ac_dGVzdHMvdGVzdC1jbG9uZS50 100644
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -60,6 +60,22 @@
   saving mapfile
   saving mapfile
 
+Make sure that a deleted .hgsubstate does not confuse hg-git
+
+  $ cd gitrepo
+  $ echo 'HASH random' > .hgsubstate
+  $ git add .hgsubstate
+  $ fn_git_commit -m 'add bogus .hgsubstate'
+  $ git rm -q .hgsubstate
+  $ fn_git_commit -m 'remove bogus .hgsubstate'
+  $ cd ..
+
+  $ hg clone -r beta gitrepo hgrepo-c
+  importing git objects into hg
+  updating to branch default
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg --cwd hgrepo-c status
+
 clone empty repo
   $ git init empty
   Initialized empty Git repository in $TESTTMP/empty/.git/