Introduction
When you use a project inside another project, called a submodule, you need to keep track of its exact version. Checking the submodule status and syncing it ensures your main project uses the right code from the submodule.
When you clone a project that contains submodules and want to check if they are initialized and up to date.
When you want to update your submodules to the latest commit recorded in the main project.
When you have changed the submodule commit in the main project and want to sync your local submodule to that commit.
When you want to verify if your submodules are on the correct commit or if they have local changes.
When you want to fetch and update all submodules recursively after pulling changes in the main project.