Petr Baudis [off-list ref] writes:
The example to remove file using index-filter uses git update-index
--remove where git rm --cached works as well.
I am not sure "works as well" is a good enough justification to choose a
Porcelain command over a plumbing command in this particular context.
After all, filter-branch is a scripting enviornment, isn't it?
There also is another subtle difference. "git rm" takes pathspecs while
"update-index" takes paths.
So after running one of these commands:
$ git rm --cached 'Makefil?'
$ git update-index --force-remove 'Makefil?'
output from:
$ git diff --cached --stat
would be different.