Git ветвь фильтра говорит, что рабочее дерево загрязнено, когда оно не

Я пытаюсь переписать свою историю в моем репозитории git, потому что мне нужно удалить файл, содержащий ограниченную информацию.

Вот что происходит:

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

Итак, я думаю, "что странно, я уверен, что у меня нет незафиксированных изменений", и я запускаю:

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

Что здесь происходит? Кто-нибудь имеет представление о том, что может произойти? В этом хранилище есть подмодули.

Информация о размещении субмодуля

У меня есть 18 подмодулей (все плагины Vim), и вот их статусы. Думал, что это может быть полезно.

$ 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)

Дополнительная информация

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

Ответ 1

Это в основном предположение, но ошибка может быть вызвана ошибкой fixed в git v1.7.7.1 ( который был выпущен после вашего исходного сообщения). Из сообщения о фиксации:

Фильтрационная ветка уже требует, чтобы перед запуском было чистое дерево. Тем не менее, он не смог обновить индекс перед проверкой, что означает, что он может быть неправильным в случае статической грязи.