I have just run a git diff, and I am getting the following output for all of my approx 10 submodules
diff --git a/.vim/bundle/bufexplorer b/.vim/bundle/bufe
Also removing the submodule and then running git submodule init and git submodule update will obviously do the trick, but may not always be appropriate or possible.
EDIT: This answer (and most of the others) are obsolete; see Devpool's answer instead.
Originally, there were no config options to make "git diff --ignore-submodules" and "git status --ignore-submodules" the global default (but see also Setting git default flags on commands). An alternative is to set a default ignore config option on each individual submodule you want to ignore (for both git diff and git status), either in the .git/config file (local only) or .gitmodules (will be versioned by git). For example:
[submodule "foobar"]
url = git@bitbucket.org:foo/bar.git
ignore = untracked
ignore = untracked to ignore just untracked files, ignore = dirty to also ignore modified files, and ignore = all to ignore also commits.
There's apparently no way to wildcard it for all submodules.
To ignore all untracked files in any submodule use the following command to ignore those changes.
git config --global diff.ignoreSubmodules dirty
It will add the following configuration option to your local git config:
[diff]
ignoreSubmodules = dirty
Further information can be found here