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