La twig de filter Git dice que el tree de trabajo está sucio cuando no está

Estoy intentando reescribir mi historial en mi repository de git porque necesito eliminar un file que contiene información restringida.

Esto es lo que pasa:

$ git filter-branch --index-filter 'git rm --cached --ignore-unmatch FILE' master Cannot rewrite branch(es) with a dirty working directory. 

Entonces creo que "es raro, estoy bastante seguro de que no tengo cambios no confirmados", y corro:

 $ git status -u # On branch master nothing to commit (use -u to show untracked files) 

¿Que esta pasando aqui? ¿Alguien tiene una idea de lo que podría estar pasando? Hay submodules en este repository.

Información de estadificación del submodule

Tengo 18 submodules (todos los complementos de Vim), y aquí están sus estados. Pensé que esto podría ser información útil.

 $ for i in $(ls); do cd $i; git status -u; cd ..; done; # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # On branch master nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) # Not currently on any branch. nothing to commit (working directory clean) 

Otra información

 $ git diff-files --ignore-submodules --quiet $ echo $? 1 $ git diff-index --cached --quiet HEAD -- $ echo $? 0 

Esto es principalmente una suposition, pero el error puede ser causado por un error que fue corregido en git v1.7.7.1 (que fue lanzado después de su publicación original). Desde el post de confirmación:

Filter-branch ya requiere que tengamos un tree de trabajo limpio antes de comenzar. Sin embargo, no se pudo actualizar el índice antes de la comprobación, lo que significa que podría estar mal en el caso de suciedad estadística.