Dans la configuration distante par défaut de git, vous devez pousser les balises explicitement (alors qu'elles sont récupérées automatiquement avec les commits vers lesquelles elles pointent). Vous devez utiliser
$ git push <remote> tag <tagname>
pour pousser une seule balise, ou
$ git push <remote> --tags
pour pousser toutes les balises (ou git push --tags
pour pousser vers la télécommande par défaut, généralement origin
).
C'est un comportement très intentionnel, pour rendre explicite les balises push. Pousser des balises doit généralement être un choix conscient.
Résumer ce que Junio C. Hamano a écrit (lié dans les commentaires de @Andre Miras)
Lors de la récupération, vous interagissez avec un référentiel distant que quelqu'un a publié, ce qui signifie:
- l'ensemble des balises qui existent là-bas sont toutes les balises que l'éditeur voulait que les internautes voient, et
- non seulement vous mais d'autres personnes verront également les mêmes balises.
En d'autres termes, les balises des référentiels que vous récupérez sont conçues pour être publiques et partagées. Cela facilitera la communication entre les développeurs s'il est facile pour tout le monde de récupérer ces mêmes balises.
C'est pourquoi il git fetch
"suit" automatiquement les balises, c'est-à-dire qu'il télécharge les balises lors du téléchargement des révisions vers lesquelles elles pointent - en d'autres termes télécharge toutes les balises publiées pertinentes .
Lorsque vous effectuez un push, vous effectuez un push depuis votre référentiel de travail, qui la plupart du temps n'est pas public, et les balises de ce référentiel ne sont pas conçues pour être publiques. Vous pouvez utiliser vos propres balises locales pour marquer votre progression, il n'est donc pas logique de pousser aveuglément toutes les balises de votre référentiel vers le référentiel que vous poussez pour publier vos modifications, dont les balises sont par définition publiques.
C'est pourquoi vous devez pousser la balise explicitement, pour la marquer comme publique.
Vous pouvez également configurer la télécommande vers laquelle vous poussez pour toujours pousser toutes les balises, par exemple, mettez quelque chose comme ça dans votre .git/config
:
["publier" à distance] # ou quel que soit son nom
url = ...
push = + refs / heads / *: refs / heads / *
push = + refs / tags / *: refs / tags / *
Cela signifie forcer toutes les têtes (toutes les branches) et toutes les balises (si vous ne voulez pas forcer la poussée des têtes, supprimez le préfixe «+» de refspec).
git push --follow-tags
peut maintenant être utile, voir ma réponse ci