When switching branches with git checkout I would assume that most of the time you would want to update your submodules.
Updated with example:
On branch A, git checkout B will result in a working copy of branch B with submodule S at 3852f1 (with a modified S). git submodule update will checkout S at fd72d7.
git checkout --recurse-submodules
was added to git 2.13
This is mentioned on the release notes at: https://github.com/git/git/commit/e1104a5ee539408b81566066aaa6963cb87d5cd6#diff-c24776ff22455a30fbb78e378b7df0b0R139
submodule.recurse
option was added to git 2.14
Set as:
git config --global submodule.recurse true
man git-config
says:
Specifies if commands recurse into submodules by default. This applies to all commands that have a
--recurse-submodules
option. Defaults to false.
I feel that not updating modules by default is a bad Git default behavior that goes against most user's expectations and limits the adoption of submodules, I really wish the devs would change it.