You spend all this time figuring out how to make git do what you want using this general format: git [args] You would expect to do the same thing with a submodule, it would be: git submodule [args] But no, submodules have their own set of commands. It's like it's purposefully obtuse for no good reason.
At least it's consistent with the rest of git then...
Git is one of those tools I just can't muster the willpower to truly learn. I use SourceTree and hope for the best, and search the web frantically when something weird happens.
I used Mercurial from only the command line for many years, never felt I needed a GUI. But git, there's just something about it.