Git submodules are complicated. Here is some recommended readings:
We use submodules for modularization. It's important to remember that a parent module pegs to a particular submodule commit point, not to a branch. The parent module does not automatically get the updates when the submodule is updated. This allows the authors of the submodule to do work without worry about breaking parents until the parents actually update their submodules. In this way, they work like versioned libraries.