Como faço para verificar uma versão específica de um submódulo usando 'submódulo git'?


Respostas:


167

Repositórios de submódulo permanecem em um estado HEAD separado apontando para um commit específico. Mudar esse commit envolve simplesmente fazer check-out de uma tag ou commit diferente e então adicionar a mudança ao repositório pai.

$ cd submodule
$ git checkout v2.0
Previous HEAD position was 5c1277e... bumped version to 2.0.5
HEAD is now at f0a0036... version 2.0

git-status no repositório pai agora relatará uma árvore suja:

# On branch dev [...]
#
#   modified:   submodule (new commits)

Adicione o diretório do submódulo e comprometa-se a armazenar o novo ponteiro.


14
Depois de comprometer o repositório pai com um branch / versão específico de um submódulo, outras pessoas podem fazer checkout da mesma versão do submódulo no futuro? Ou eles precisam especificar manualmente novamente?
— QZHua

@QZHua: Eu mesmo experimentei isso e parece que o ID de confirmação do submódulo é preservado quando o pai é clonado.
— Psiconauta de

37

Etapa 1: adicione o submódulo

   git submodule add git://some_repository.git some_repository

Etapa 2: Corrija o submódulo para um commit particular

Por padrão, o novo submódulo rastreará o HEAD do branch master, mas NÃO será atualizado conforme você atualiza seu repositório principal. Para alterar o submódulo para rastrear um commit particular ou branch diferente, mude o diretório para a pasta do submódulo e troque os branches como você faria em um repositório normal.

   git checkout -b some_branch origin/some_branch

Agora, o submódulo está fixado no branch de desenvolvimento em vez do HEAD do master.

De Two Guys Arguing - Amarre submódulos Git a um commit ou branch particular .


20
É mais fácil de usargit submodule add -b some_branch git://some_repository.git some_repository
— Caumons,

15
Neste momento não parece que git submodule add -bpode levar uma etiqueta ou um sha1hash. Só pode levar um galho.
— CMCDragonkai

Existe um problema para isso no rastreador de problemas Git? Alguém poderia postar um URL para que possamos rastreá-lo? Obrigado.
— colan

As instruções @colan para relatar bugs estão em git-scm.com/community . Mas -bo suporte a branches e não tags ou commits é um recurso, não um bug (na verdade, -bé uma abreviação de --branch).
— Henry

1
Suspiro. Depois de todos esses anos, eles ainda não têm um rastreador de problemas público.
— colan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.