gitaarik/git_submodules. md (Português)
Why submódules?
no Git pode adicionar um submódulo a um repositório. Este é basicamente arepository embutido em seu repositório principal. Isto pode ser muito útil. Algumas vantagens de usar submódulos:
-
Você pode separar o código em repositórios diferentes.
útil se tiver uma base de código com componentes Grandes, poderá fazer de um componente um submódulo. Desta forma, você ” terá um log git mais limpo(os commits são específicos de um determinado componente).,
-
pode adicionar o submódulo a múltiplos repositórios.
é útil se tiver vários repositórios que partilham os mesmos. Com esta abordagem, poderá actualizar facilmente estes componentes em todos os repositórios que os adicionaram como submódulos.Isto é muito mais convienente do que copiar o código para as pastas.
Basics
quando adiciona um submódulo no Git, não adiciona o código do sub-módulo ao repositório principal, só adiciona informações sobre o sub-módulo que é adicionado ao repositório principal., Esta informaçãoescreve para onde aponta o submódulo. Desta forma, o código do”sub-módulo”não será automaticamente atualizado se o sub-módulo”srepository for atualizado. Isto é bom, porque o seu código pode não funcionar com o mais recente compromisso do submódulo, previne um comportamento inesperado.,
Adicionar um sub-módulo
Você pode adicionar um sub-módulo para um repositório como este:
Com a configuração padrão, este irá verificar o código deawesome_submodule.git
repositório para o path_to_awesome_submodule
diretório, e irá adicionar informações para o repositório principal aboutthis submódulo, que contém a cometer o submódulo de pontos,que será a atual confirmação de que o padrão de ramificação (geralmentemaster
ramo) no momento em que este comando é executado.,
Após esta operação, Se fizer um id
verá dois ficheiros no id
lista: o id
ficheiro e a localização do submódulo. Quando você commit e empurra esses arquivos você commit / push o submódulo para a origem.se um novo submódulo é criado por uma pessoa, as outras pessoas na equipe precisam iniciar este submódulo. Primeiro você tem que obter a informação sobre o submódulo, isto é recuperado por um id
., Se houver novos submódulos, você vai vê-lo na saída degit pull
. Então você terá que iniciá-los com:
Isto irá extrair todo o código do submódulo e colocá-lo na diretoria para a qual está configurado.
Se você clonou um repositório que faz uso de submódulos, você deve executar este comando para obter o código do submódulo. Isto não é feito automaticamente por git clone
.
a carregar as actualizações no submódulo
o submódulo é apenas um repositório separado., Se você quiser fazer changesto, você deve fazer as alterações neste repositório e empurrá-las como um repositório Git regular (basta executar os comandos git no diretório do thesubmodule”). No entanto, você também deve deixar o mainrepository saber que você”atualizou o repositório do submodule”, e fazê-lo usar o mais recente commit do repositório do submodule. Porque se você fizer novos commits dentro de um submódulo, o repositório principal ainda apontará para o commit antigo.,
assim, se quiser ter estas alterações no seu repositório principal também, deverá dizer ao repositório principal para usar o Último envio do módulo. Como é que fazes isto?
Por isso, fez alterações no repositório do submódulo e Enviou-as no seu repositório. Agora, se você fazer uma git status
no mainrepository, você vai ver que o submódulo está na lista Changes not staged for commit
e tem o texto ” (modified content)
por trás dele.Isto significa que o código do submódulo é verificado no commit diferente do que o repositório principal está apontando., Para tomar o ponto principal do repositório para este novo commit, basta adicionar esta alteração com git add
e depois enviar e enviar.
mantendo os seus submódulos actualizados
Se alguém actualizou um submódulo, os outros membros da equipa devem actualizar o código dos seus submódulos. Isto não é feito automaticamente porgit pull
, porque com git pull
ele só recupera a informação de que o submódulo está apontando para outro comando, mas não”atualizar o código do submódulo”., Para actualizar o código dos seus submódulos, deverá executar:
o que acontece se não executar este comando?
Se não executar este comando, o código do seu submódulo é checado para um commit antigo. Quando você fizer git status
você vai ver thesubmodule Changes not staged for commit
lista com o texto ” (modified content)
por trás dele. Isto não se deve ao facto de ter alterado o código do modelo, mas sim ao facto de o seu código ser verificado para um comando diferente. Então o Git vê isso como uma mudança, mas na verdade você não atualizou o código do submódulo., Então, se você está trabalhando com submódulos, não se esqueça de manter seus submódulos atualizados.
tornando mais fácil para todos
é por vezes irritante que se esqueça de iniciar e actualizar os seus modelos. Felizmente, existem alguns truques para torná-lo mais fácil:
Isto irá atualizar os submódulos, e se eles”não são iniciados ainda, irá iniciá-los.pode também ter submódulos dentro de submódulos., Neste caso você”llwant para atualização/iniciar o submódulos de forma recursiva:
Este é um muito de escrever, então você pode criar um alias:
Agora, sempre que você executar git update
ele vai executar um git pull
anda git submodule update --init --recursive
, assim, a actualização de todos os codein seu projeto.