add submodule: git submodule add [url] config: diff: git config --global diff.submodule log (git diff --submodule) status: git config status.submodulesummary 1 submodule commands: git config submodule.recurse true cloning: git clone [url] git submodule init git submodule update / git submodule update --init or git clone --recurse-submodules [url] change branch: git config -f .gitmodules submodule.[name].branch [branch] fetch updates for submodules git submodule update --remote [name] (first update) git submodule update --init --recursive (update all) git submodule update --remote --merge (fetch and merge) git pull --recurse-submodules in case url changed: git submodule sync --recursive upload updates for submodules: git push --recurse-submodules=(check/on-demand) other: git submodule foreach '[command]'