git submodule foreach git pull origin master vs. git pull --recursive-submodules

Solution 1:

git submodule update --recursive is updating the submodules to match the commit in the parent repo. So you need to commit a change to the parent repo for that command to do anything.

With this setup:

/proj/.git
/proj/module/.git

You make changes in "module", commit, and push them. In "proj", you commit module (it just shows the submodule commit hash changing).

Now when you pull and submodule update, it will update "module" to use the new commit.