Isso funciona com nossas bibliotecas executando o GIT v1.7.1, onde temos um repositório de pacotes DEV e um repositório de pacotes LIVE. Os próprios repositórios nada mais são que um shell para empacotar os ativos de um projeto. todos os submódulos.
O LIVE nunca é atualizado intencionalmente, no entanto, arquivos em cache ou acidentes podem ocorrer, deixando o repositório sujo. Novos submódulos adicionados ao DEV também devem ser inicializados no LIVE.
Repositório de Pacotes no DEV
Aqui queremos extrair todas as alterações que ainda não estamos cientes, e atualizaremos nosso repositório de pacotes.
# Recursively reset to the last HEAD
git submodule foreach --recursive git reset --hard
# Recursively cleanup all files and directories
git submodule foreach --recursive git clean -fd
# Recursively pull the upstream master
git submodule foreach --recursive git pull origin master
# Add / Commit / Push all updates to the package repo
git add .
git commit -m "Updates submodules"
git push
Repositório de Pacotes no LIVE
Aqui, queremos extrair as alterações confirmadas no repositório DEV, mas não as alterações iniciais desconhecidas.
# Pull changes
git pull
# Pull status (this is required for the submodule update to work)
git status
# Initialize / Update
git submodule update --init --recursive
git reset --hard
não funcionar, tente primeiro especificar a ramificação remota comgit reset --hard origin/<branch_name>
.