Menu
Coddy logo textTech

Git Submodule

Última atualização

Um submódulo incorpora um repositório Git dentro de outro, fixado em um commit específico. O repo pai registra de qual commit do submódulo ele depende, para que todos obtenham a mesma versão. É como você inclui uma biblioteca ou componente compartilhado que vive em seu próprio repositório sem copiar o código dele.

Experimente isto no terminal playground - um shell real no seu navegador, nada para instalar.

Um git submodule incorpora outro repositório dentro do seu, fixado em um commit exato.

Sintaxe

CommandWhat it does
git submodule add <url> libs/xAdicionar um repo como submódulo em libs/x
git clone --recurse-submodules <url>Clonar um repo e seus submódulos
git submodule update --init --recursiveInicializar e buscar submódulos após um clone simples
git submodule update --remoteAtualizar submódulos para o commit mais recente
git submodule statusMostrar o commit de cada submódulo

Casos comuns

GoalCommand
Clonar um projeto que usa submódulosgit clone --recurse-submodules <url>
Buscar submódulos depois de já ter clonadogit submodule update --init --recursive
Atualizar um submódulo para o mais recentegit submodule update --remote

Perguntas frequentes sobre git submodule

O que é um git submodule?
Um submódulo é um repositório Git aninhado dentro de outro repositório Git em um commit fixo. O repo pai armazena um ponteiro para esse commit exato em vez dos arquivos do submódulo, de modo que os colaboradores fazem checkout da mesma versão. É usado para incluir uma dependência ou componente compartilhado que tem seu próprio repo e histórico.
Como clono um repositório com submódulos?
Use git clone --recurse-submodules <url> para clonar o pai e todos os seus submódulos em uma só etapa. Se você já clonou sem essa flag, execute depois git submodule update --init --recursive para preencher as pastas dos submódulos.
Como atualizo um submódulo para o commit mais recente?
Execute git submodule update --remote, que busca a branch rastreada de cada submódulo e o move para o commit mais recente. Depois confirme a mudança no repo pai, já que o pai registra para qual commit do submódulo ele aponta - a atualização só é salva quando você faz commit desse ponteiro.
Por que minha pasta de submódulo está vazia após o clone?
Porque você clonou sem --recurse-submodules, então o Git criou as pastas mas não buscou o conteúdo delas. Corrija com git submodule update --init --recursive, que inicializa e baixa cada submódulo.
Posso praticar isto online?
Sim. Abra o terminal playground para executar git submodule em um shell real no seu navegador - nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre a configuração de repositórios passo a passo.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR