Hi, I would like to add submodules to existing projects. Some branches would have the submodules and some branches would not. Since we often switch from one branch to another, I would like the submodules to update automatically so I activate the option submodule.recurse. But I am experiencing a problem if I do the following: 1. Clone repo, with master containing no submodules 2. Checkout a branch that contains submodules. It results in this error: fatal: not a git repository: ../.git/modules/submodule fatal: could not reset submodule index I think git is trying to update the submodule but the submodule has not yet been initialized (runs "git submodule update" without "--init"). Is there a way to ask git to initialize the submodule automatically ? Here is the full reproduction instructions: # Create a repository mkdir main cd main git init touch main.txt git add main.txt git commit -a -m "Initial commit" cd .. # Create a second repository mkdir sub cd sub git init touch sub.txt git add sub.txt git commit -a -m "Initial commit of repo sub" cd .. # Add the second repository as submodule, on a separate branch cd main git branch with-submodule git checkout with-submodule git submodule add ../sub sub git commit -a -m "Add submodule" # Set main repo back to master branch (without the submodule) git checkout master cd .. # Make a clone and checkout the branch git clone main clone1 cd clone1 git checkout with-submodule # Submodule is not automatically updated (sub folder is empty) git submodule update --init --recursive # Now the submodule content is there # But I want to automatically update submodules when checking out a branch cd .. # Trying again, adding --recursive during clone git clone --recursive main clone2 cd clone2 git checkout with-submodule # Submodule is still not automatically updated (sub folder is empty) git submodule update --init --recursive cd .. # Trying again, adding --recurse-submodules during checkout git clone --recursive main clone3 cd clone3 git checkout --recurse-submodules with-submodule # Fails with these error messages : # fatal: not a git repository: ../.git/modules/sub # fatal: could not reset submodule index # It seems like Git tries to update the submodule but without having initialized the submodule cd .. # Trying again with submodule.recurse git config --global submodule.recurse true git clone main clone4 cd clone4 git checkout with-submodule # Submodule is still not automatically updated (sub folder is empty) # It seems like submodule.recurse does not affect git clone # Trying again with both submodule.recurse and --recursive git config --global submodule.recurse true git clone --recursive main clone5 cd clone5 git checkout with-submodule # Fails with these error messages : # fatal: not a git repository: ../.git/modules/sub # fatal: could not reset submodule index # Same issue as with "git checkout --recurse-submodules" # I tested this in git-bash on Windows 10 $ git --version git version 2.17.1.windows.2 # And in Ubuntu in WSL $ git --version git version 2.17.1