Atualização de março de 2013
O Git 1.8.2 adicionou a possibilidade de rastrear ramificações.
" git submodule
" começou a aprender um novo modo de integração com a ponta da ramificação remota (em oposição à integração com a confirmação registrada no gitlink do superprojeto).
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
Se você já tinha um submódulo presente, agora deseja rastrear uma ramificação, consulte " como fazer com que um submódulo existente rastreie uma ramificação ".
Consulte também o tutorial de Vogella sobre submódulos para obter informações gerais sobre submódulos.
Nota:
git submodule add -b . [URL to Git repo];
^^^
Veja a git submodule
página de manual :
Um valor especial de .
é usado para indicar que o nome da ramificação no submódulo deve ser o mesmo nome que a ramificação atual no repositório atual .
Consulte commit b928922727d6691a3bdc28160f93f25712c565f6 :
submodule add
: Se --branch
for fornecido, registre-o em.gitmodules
Isso permite que você grave facilmente uma submodule.<name>.branch
opção .gitmodules
ao adicionar um novo submódulo. Com esse patch,
$ git submodule add -b <branch> <repository> [<path>]
$ git config -f .gitmodules submodule.<path>.branch <branch>
reduz a
$ git submodule add -b <branch> <repository> [<path>]
Isso significa que chamadas futuras para
$ git submodule update --remote ...
receberá atualizações do mesmo ramo que você usou para inicializar o submódulo, que geralmente é o que você deseja.
Assinado por: W. Trevor King
Resposta original (fevereiro de 2012):
Um submódulo é um único commit referenciado por um repositório pai.
Como é um repositório Git por si só, a "história de todos os commits" é acessível através de um git log
dentro desse submódulo.
Portanto, para um pai rastrear automaticamente a confirmação mais recente de uma ramificação de um sub-módulo, seria necessário:
- cd no submódulo
- git fetch / pull para garantir que ele tenha as confirmações mais recentes no ramo direito
- CD de volta no repositório principal
- adicione e confirme para registrar o novo commit do submódulo.
O gitslave (que você já viu) parece ser o melhor ajuste, inclusive para a operação de confirmação .
É um pouco chato fazer alterações no submódulo devido ao requisito de fazer check-out no ramo correto do submódulo, fazer a alteração, confirmar e, em seguida, entrar no superprojeto e confirmar o commit (ou pelo menos registrar o novo local do submódulo).
Outras alternativas são detalhadas aqui .