Na configuração remota padrão do git, você precisa enviar tags explicitamente (enquanto elas são buscadas automaticamente junto com as confirmações para as quais apontam). Você precisa usar
$ git push <remote> tag <tagname>
empurrar uma única tag ou
$ git push <remote> --tags
empurrar todas as tags (ou git push --tags
empurrar para o controle remoto padrão, geralmente origin
).
Esse é um comportamento muito pretendido, para tornar explícitas as tags de envio. Empurrar etiquetas deve ser geralmente uma escolha consciente.
Resumindo o que Junio C. Hamano escreveu (link nos comentários de @Andre Miras)
Ao buscar, você está interagindo com um repositório remoto que alguém publicou, o que significa:
- o conjunto de tags que existe, tudo o que o editor deseja que as pessoas vejam e
- não apenas você, mas outras pessoas também verão as mesmas tags.
Em outras palavras, as tags nos repositórios que você busca são projetadas para serem públicas e compartilhadas. Facilitará a comunicação entre os desenvolvedores se for fácil para todos buscar essas mesmas tags.
É por isso que git fetch
"segue" automaticamente as tags, ou seja, ele baixa as tags ao baixar as revisões para as quais elas apontam - em outras palavras, baixa todas as tags publicadas relevantes .
Ao empurrar, você está empurrando do seu repositório de trabalho, que na maioria das vezes não é público, e as tags nesse repositório não foram projetadas para serem públicas. Você pode usar suas próprias tags locais para marcar seu progresso, portanto, não faz sentido enviar todas as tags cegamente em seu repositório para o repositório que você está pressionando para publicar suas alterações, cujas tags são por definição públicas.
É por isso que você precisa pressionar a tag explicitamente, para marcar como pública.
Como alternativa, você pode configurar o controle remoto para o qual você pressiona para sempre pressionar todas as tags, por exemplo, colocar algo assim em seu .git/config
:
[remota "publicação"] # ou o que quer que seja chamado
url = ...
push = + refs / cabeças / *: refs / cabeças / *
push = + refs / tags / *: refs / tags / *
Isso significa forçar o envio de todas as cabeças (todas as ramificações) e todas as tags (se você não quiser forçar o envio de cabeças, remova o prefixo '+' do refspec).
git push --follow-tags
agora pode ser útil, ver minha resposta abaixo