Skip to content

Git Submodule para Leigos

Vinícius Stutz edited this page Sep 30, 2026 · 7 revisions

Submódulos permitem que você incorpore um repositório Git dentro de outro, mantendo os dois repositórios completamente independentes. São úteis para gerenciar dependências externas ou bibliotecas compartilhadas entre projetos.

Adicionar um Submódulo

Dentro da pasta do seu repositório Git principal, execute:

git submodule add <repository-url> <directory>
  • <repository-url>: URL do repositório externo que será adicionado como submódulo.
  • <directory>: nome da pasta onde o submódulo será clonado dentro do seu repositório principal.

Após executar o comando, o Git criará (ou atualizará) o arquivo .gitmodules com a referência ao novo submódulo.

Clonar um Repositório com Submódulos

Ao clonar um repositório que possui submódulos, eles não são baixados automaticamente. Você tem duas opções:

Opção 1 - Clonar já incluindo os submódulos:

git clone --recurse-submodules <repository-url>

Opção 2 - Inicializar após clonar:

git submodule update --init --recursive

O flag --recursive garante que submódulos aninhados (submódulos dentro de submódulos) também sejam inicializados.

Atualizar um Submódulo

Para atualizar um submódulo com as últimas alterações do seu repositório de origem:

# 1. Entre na pasta do submódulo
cd <submodule-directory>

# 2. Baixe as atualizações
git pull

# 3. Volte para o repositório principal e registre a atualização
cd ..
git add <submodule-directory>
git commit -m "Atualiza submódulo para a versão mais recente"

Push de Alterações no Submódulo

Se você fizer alterações dentro da pasta do submódulo, precisará enviá-las ao repositório externo antes de atualizar o repositório principal:

# 1. Entre na pasta do submódulo
cd <submodule-directory>

# 2. Faça suas alterações e envie ao repositório do submódulo
git add .
git commit -m "Descrição das alterações"
git push

# 3. Volte para o repositório principal e registre o novo estado
cd ..
git add <submodule-directory>
git commit -m "Atualiza ponteiro do submódulo"
git push

Comandos Úteis de Gerenciamento

git submodule status                  # Exibe o estado atual de todos os submódulos
git submodule foreach git pull        # Executa 'git pull' em cada submódulo
git submodule foreach git status      # Executa 'git status' em cada submódulo
git submodule sync                    # Sincroniza as URLs dos submódulos com o .gitmodules

git submodule foreach é especialmente útil para executar qualquer comando Git em todos os submódulos de uma só vez.

Considerações Finais

Warning

Submódulos são uma ferramenta poderosa, mas podem ser complexos de gerenciar - especialmente em equipes. Certifique-se de que todos os colaboradores entendam o fluxo antes de adotá-los em projetos compartilhados.

Pontos importantes:

  • O repositório principal armazena apenas um ponteiro (hash do commit) para o submódulo, não o código em si.
  • Ao atualizar o submódulo, sempre lembre de fazer commit do novo ponteiro no repositório principal.
  • Use git submodule status para verificar o estado atual de todos os submódulos.

Clone this wiki locally