Exemplo Prático: Merge feature/java17-migration → develop
Este documento mostra exatamente o que fazer, passo a passo, com comandos reais.
📋 Pré-requisitos
Antes de começar, verifique:
# 1. Você está no diretório correto?
cd /opt/ds-ecosif-ia-services
# 2. Você tem permissões para fazer push?
git remote -v
# 3. Todos os branches estão atualizados?
git fetch --all
# 4. Você está em um estado limpo?
git status
# (deve mostrar "working tree clean" ou apenas submódulos modificados)
🚀 Passo a Passo Completo
PASSO 1: Preparar o Branch develop
# 1.1 Mudar para develop
git checkout develop
# 1.2 Atualizar do remote
git pull origin develop
# 1.3 Verificar status
git status
Saída esperada: Working tree clean (ou apenas submódulos modificados)
PASSO 2: Fazer o Merge
# 2.1 Fazer merge do feature/java17-migration
git merge feature/java17-migration --no-ff -m "Merge feature/java17-migration into develop
- Migração para Java 17
- Atualizações de dependências
- Correções de compliance e estrutura
- Melhorias no balanceinquiry"
# 2.2 Se houver conflitos, resolver:
# - Git mostrará arquivos com conflitos
# - Edite os arquivos manualmente
# - Depois: git add . && git commit
# 2.3 Verificar resultado
git log --oneline -5
Saída esperada: Você verá o commit de merge no topo do histórico
PASSO 3: Atualizar Submódulos para develop
Agora os submódulos ainda apontam para commits do feature/java17-migration.
Precisamos atualizá-los para apontar para o develop de cada submódulo.
Opção A: Usar o Script (RECOMENDADO)
# 3.1 Executar script de sincronização
./scripts/sync-submodules.sh develop develop
# 3.2 Ver o que mudou
git status
# 3.3 Adicionar todas as atualizações
git add .
# 3.4 Commitar
git commit -m "chore: atualizar submódulos para branch develop
- ecosif-compliance: atualizado para develop
- ecosif-structure: atualizado para develop
- ecosif-angular: atualizado para develop
- [adicione outros conforme necessário]"
Opção B: Manual (se preferir controle total)
# Para cada submódulo, fazer:
# ecosif-compliance
cd ecosif-compliance
git checkout develop
git pull origin develop
cd ..
git add ecosif-compliance
git commit -m "chore: atualizar ecosif-compliance para develop"
# ecosif-structure
cd ecosif-structure
git checkout develop
git pull origin develop
cd ..
git add ecosif-structure
git commit -m "chore: atualizar ecosif-structure para develop"
# ecosif-angular
cd ecosif-angular
git checkout develop
git pull origin develop
cd ..
git add ecosif-angular
git commit -m "chore: atualizar ecosif-angular para develop"
# Repetir para todos os outros submódulos...
PASSO 4: Configurar Submódulos para Seguir Branch develop
Isso faz com que os submódulos sempre sigam o branch develop automaticamente.
# 4.1 Ver submódulos atuais
cat .gitmodules
# 4.2 Configurar cada submódulo
git config -f .gitmodules submodule.ecosif-compliance.branch develop
git config -f .gitmodules submodule.ecosif-structure.branch develop
git config -f .gitmodules submodule.ecosif-angular.branch develop
git config -f .gitmodules submodule.ecosif-auth.branch develop
git config -f .gitmodules submodule.ecosif-masterdata.branch develop
git config -f .gitmodules submodule.ecosif-moviments.branch develop
git config -f .gitmodules submodule.ecosif-querys.branch develop
git config -f .gitmodules submodule.ecosif-reports.branch develop
# Adicione outros conforme necessário
# 4.3 Verificar configuração
cat .gitmodules
# Deve mostrar algo como:
# [submodule "ecosif-compliance"]
# path = ecosif-compliance
# url = <url>
# branch = develop
# 4.4 Commitar a configuração
git add .gitmodules
git commit -m "chore: configurar submódulos para seguir branch develop"
PASSO 5: Verificar Tudo Está Correto
# 5.1 Ver status geral
git status
# 5.2 Ver branch e commit de cada submódulo
git submodule foreach 'echo "$name: $(git branch --show-current) @ $(git rev-parse --short HEAD)"'
# 5.3 Verificar que todos estão em develop
# (todos devem mostrar "develop" como branch)
# 5.4 Ver histórico recente
git log --oneline --graph -10
Saída esperada: Todos os submódulos devem estar no branch develop
PASSO 6: Push para Remote
# 6.1 Push do repositório principal
git push origin develop
# 6.2 Se algum submódulo também precisar de push
# (geralmente não é necessário, mas verifique)
cd ecosif-compliance
git status
# Se mostrar "Your branch is ahead of 'origin/develop'", fazer:
# git push origin develop
cd ..
✅ Verificação Final
Execute estes comandos para confirmar que tudo está correto:
# 1. Verificar branch atual
git branch --show-current
# Deve mostrar: develop
# 2. Verificar status
git status
# Deve mostrar: "working tree clean" ou apenas submódulos não commitados
# 3. Verificar submódulos
git submodule status
# Todos devem mostrar o commit atual do develop
# 4. Verificar branches dos submódulos
git submodule foreach 'git branch --show-current'
# Todos devem mostrar: develop
# 5. Testar atualização automática
git submodule update --remote --dry-run
# Deve mostrar quais submódulos seriam atualizados (se houver)
🔄 Processo Contínuo Após o Merge
Agora que tudo está configurado, o processo diário é:
Quando Desenvolver em um Submódulo
# 1. Trabalhar no submódulo
cd ecosif-compliance
# ... fazer alterações ...
git add .
git commit -m "feat: nova funcionalidade"
git push origin develop
cd ..
# 2. Atualizar referência no repositório principal
git submodule update --remote ecosif-compliance
git add ecosif-compliance
git commit -m "chore: atualizar ecosif-compliance"
git push origin develop
Quando Atualizar Todos os Submódulos
# Atualizar todos de uma vez
git submodule update --remote --recursive
git add .
git commit -m "chore: atualizar todos os submódulos"
git push origin develop
🆘 Troubleshooting
Erro: "fatal: refusing to merge unrelated histories"
# Adicionar flag --allow-unrelated-histories
git merge feature/java17-migration --allow-unrelated-histories --no-ff -m "Merge..."
Erro: Submódulo não muda de branch
cd <submodule>
git fetch origin
git checkout develop
git branch --set-upstream-to=origin/develop develop
cd ..
Erro: "submodule is not on branch develop"
cd <submodule>
git checkout develop
cd ..
git add <submodule>
git commit -m "fix: forçar <submodule> para develop"
📝 Resumo dos Comandos
# Sequência completa (copie e cole)
cd /opt/ds-ecosif-ia-services
git checkout develop
git pull origin develop
git merge feature/java17-migration --no-ff -m "Merge feature/java17-migration into develop"
./scripts/sync-submodules.sh develop develop
git add .
git commit -m "chore: atualizar submódulos para develop"
# Configurar .gitmodules (veja PASSO 4 acima)
git push origin develop
🎯 Resultado Esperado
Após completar todos os passos:
✅ Branch develop do repositório principal contém o merge
✅ Todos os submódulos apontam para o branch develop de cada um
✅ .gitmodules configurado para seguir develop
✅ Tudo commitado e pushado
✅ Pronto para desenvolvimento contínuo