There are two ways of doing this and they both work with Git submodules.
git reset --hard <commit-ID>
- Obviously risky as it will overwrite all local changes in the working directory.
- Works better when you only depend on Git submodules but don’t make any code changes to them (such as Hugo themes).
git checkout <commit-ID>