Se você clonou um repositório Git no seu Mac e as pastas dos submódulos estão vazias, abra o Terminal, acesse o repositório e execute git submodule update --init --recursive. Isso inicializa os submódulos registrados pelo projeto, faz o checkout dos commits que o repositório pai especifica e também lida com submódulos aninhados. Você precisa ter o Git instalado e ter acesso ao repositório remoto de cada submódulo.
Execute o comando de inicialização no repositório clonado
Abra o Terminal e use o comando cd para entrar no diretório criado pelo git clone. Se o nome do diretório contiver espaços, coloque-o entre aspas, por exemplo:
cd "$HOME/Projects/My Project"
git submodule update --init --recursive
Substitua o caminho de exemplo pelo local real do seu clone. Você também pode digitar cd , arrastar a pasta do repositório do Finder para a janela do Terminal para inserir o caminho e pressionar Return. A Apple documenta o Terminal como a interface de linha de comando do macOS e identifica o zsh como seu shell padrão; os comandos acima usam a sintaxe comum de shell que funciona no zsh. Abrir ou encerrar o Terminal no Mac, Alterar o shell padrão no Terminal do Mac
A documentação oficial do Git explica que --init inicializa os submódulos que ainda não foram inicializados, enquanto --recursive também atualiza os submódulos aninhados. O comando update busca os commits faltantes e faz o checkout da revisão esperada pelo repositório pai. Documentação do git-submodule
Verifique se os submódulos foram inicializados
Para ver o que o repositório pai registra, execute:
git submodule status --recursive
Uma linha de status de submódulo normalmente mostra um ID de commit e um caminho. Um sinal de menos no início significa que o submódulo não está inicializado; um sinal de mais significa que o commit em checkout é diferente do commit registrado pelo repositório pai; e U indica um conflito. A opção de status recursivo também relata os submódulos aninhados. Documentação do git-submodule
Se a saída listar caminhos com sinais de menos, execute o comando de inicialização novamente a partir do diretório raiz do repositório. Se nenhum submódulo for exibido, verifique se o clone atual realmente contém um arquivo .gitmodules e se você está no repositório pretendido. Um repositório pode não ter submódulos, ou o commit que você clonou pode não registrar nenhum.
Entenda qual revisão passa pelo checkout
Um submódulo é seu próprio repositório Git, e o repositório pai registra um commit específico para ele. O comportamento padrão do update faz o checkout desse commit registrado, geralmente deixando o submódulo em um estado de HEAD desanexado (detached). Isso é esperado quando você está configurando o projeto pai: ele reproduz a versão selecionada pelo repositório pai. Git - Submódulos, Documentação do git-submodule
Por esse motivo, não adicione --remote quando seu objetivo for apenas inicializar o clone. Essa opção usa a ramificação de rastreamento remoto (remote-tracking branch) do submódulo em vez do commit registrado pelo pai, o que pode resultar em uma versão diferente. Se você pretende desenvolver dentro de um submódulo, primeiro conheça o fluxo de trabalho do projeto; mudar para uma branch ou fazer commits dentro dele é um processo separado de inicializá-lo.
Se o comando falhar
As atualizações de submódulos precisam se comunicar com os remotos listados na configuração do projeto, portanto, uma falha de rede ou falta de acesso pode impedir o checkout. Submódulos privados podem exigir que você se autentique no serviço de hospedagem ou tenha permissão de acesso ao repositório. Se o Git relatar que não consegue encontrar um repositório ou resolver um host, confirme sua conexão de rede e suas permissões e tente novamente.
Se um projeto alterou recentemente a URL de um submódulo, o comando git submodule sync --recursive pode sincronizar a configuração local de URLs a partir do .gitmodules; em seguida, execute git submodule update --init --recursive. O Git documenta o sync para atualizar a configuração de URL para submódulos que já foram inicializados ou que foram adicionados recentemente. Documentação do git-submodule
Se você já possui trabalho local dentro de um submódulo, inspecione-o antes de forçar qualquer atualização ou trocar de revisão. O comando de inicialização padrão não instrui o Git a forçar o checkout sobrescrevendo alterações locais; resolva ou preserve esse trabalho deliberadamente, em vez de excluir o diretório como um atalho para solucionar o problema.
Assim que o git submodule status --recursive mostrar os IDs de commit esperados sem sinais de menos no início, as revisões dos submódulos registradas pelo repositório terão passado pelo checkout. Continue trabalhando a partir do repositório pai, a menos que as instruções do projeto exijam trabalho separado dentro de um submódulo.
Fontes
Git - Submódulos — Git