The man page for update-index says
-q
Quiet. If --refresh finds that the index needs an update,
the default behavior is to error out. This
option makes git update-index continue anyway.
--ignore-submodules
Do not try to update submodules. This option is only
respected when passed before --refresh.
However, it seems that the "This option is only respected when passed
before --refresh." also applies to -q (and --unmerged); at least I get
different results from
git update-index -q --refresh
git update-index --refresh -q
>From the documentation, that doesn't seem to be intentional, but the
code in update-index.c seems to handle -q, --ignore-submodules,
--ignore-missing and --unmerged the same way.
Rasmus