Git Pie: A Arte Ancestral do Versionamento đŸ„§ Help

Git Submodules: Gerenciando DependĂȘncias como SubmĂłdulos

+------------------------+ | Git Submodules | | | | Nested Repositories | | Dependency Management | | Version Control | | | | Project Integration | +------------------------+

Conceitos Básicos

O que são Submodules?

Contém

Contém

Referencia

Referencia

Projeto Principal

Submodule A

Submodule B

Commit EspecĂ­fico

Commit EspecĂ­fico

Estrutura

projeto/ ├── .git/ ├── .gitmodules ├── lib/ │ └── dependency/ └── src/

Comandos Essenciais

Operações Básicas

# Adicionar submodule git submodule add https://github.com/user/repo lib/repo # Inicializar submodules git submodule init # Atualizar submodules git submodule update --init --recursive # Remover submodule git submodule deinit lib/repo git rm lib/repo

Clonagem

# Clone com submodules git clone --recursive https://github.com/user/repo # Ou apĂłs clone normal git submodule update --init --recursive

Gerenciamento

Atualizando Submodules

SubmoduleMain RepoSubmoduleMain Repogit submodule updateCheckout commitAtualiza referĂȘncia

Trabalhando com Branches

# Entrar no submodule cd lib/repo # Mudar branch git checkout main # Atualizar git pull origin main # Voltar e commitar cd ../.. git add lib/repo git commit -m "atualiza submodule"

Boas Práticas

Recomendações

+------------------------+ | BOAS PRÁTICAS | | | | ‱ VersĂ”es estĂĄveis | | ‱ Commits atĂŽmicos | | ‱ Documentação clara | | ‱ Updates planejados | | ‱ Testes integrados | +------------------------+

Configuração

# Configurar push recursivo git config push.recurseSubmodules on-demand # Configurar status detalhado git config status.submoduleSummary true

Troubleshooting

Problemas Comuns

ProblemasDetached HEADUpdates falhamConflitosCheckout branchUpdate referenceNetwork issuesPermissionsWrong URLsMergeRebaseReset

Soluções

# Resolver detached HEAD cd submodule git checkout main cd .. git add submodule git commit # Forçar update git submodule update --force --recursive

Workflows

Desenvolvimento

Update

Test

Commit

Push

Develop

Submodule

Integration

Main Repo

Remote

CI/CD

# Script de CI #!/bin/sh # Inicializar e atualizar submodules git submodule update --init --recursive # Build e teste for module in $(git submodule | awk '{print $2}'); do cd $module npm install npm test cd .. done

Alternativas

Comparação

DependencySubmodulesPackage ManagerMonorepoGit nativeVersion controlComplex setupnpm/yarncomposerSimple setupAll in oneSimple workflowLarge size

Dicas Avançadas

Performance

# Clone superficial git clone --depth 1 --shallow-submodules # Update paralelo git submodule update --init --recursive --jobs 4

Automação

# Hook pre-push #!/bin/sh git submodule foreach git push # Hook post-merge #!/bin/sh git submodule update --recursive

Próximos Passos

Tópicos Relacionados

22 abril 2025