Je suis conscient de la raison pour laquelle git push --tags
c'est une opération distincte de plaine ancienne git push
. Pousser les balises devrait être un choix conscient, car vous ne voulez pas en pousser une accidentellement. C'est très bien. Mais existe-t-il un moyen de rapprocher les deux? (Mis à part git push && git push --tags
.)
388
git push && git push --tags
?--follow-tags
option depuis git 1.8.3--tags
ne distingue pas entre les balises légères et annotés la sourceRéponses:
Mise à jour mai 2015
Depuis git 2.4.1 , vous pouvez faire
Comme indiqué dans ce fil de discussion par Matt Rogers répondant à Wes Hurd :
--follow-tags
ne pousse que les balises annotées .Ce serait poussé (par opposition à
git tag <tagname>
une balise légère, qui ne serait pas poussée, comme je l'ai mentionné ici )Mise à jour avril 2013
Depuis git 1.8.3 (22 avril 2013) , vous n'avez plus besoin de faire 2 commandes pour pousser les branches, puis pour pousser les balises :
Vous pouvez maintenant essayer, en poussant de nouveaux commits:
Cela ne poussera pas toutes les balises locales cependant, seulement celle référencée par les commits qui sont poussées avec le
git push
.Git 2.4.1+ (Q2 2015) introduira l'option
push.followTags
: voir " Comment faire"git push
"inclure des balises dans une branche? ".Réponse originale, septembre 2010
L'option nucléaire serait
git push --mirror
, ce qui poussera tous les arbitres sousrefs/
.Vous pouvez également envoyer une seule balise avec votre validation de branche actuelle:
Vous pouvez combiner l'
--tags
option avec une refspec comme:(puisque cela
--tags
signifie: toutes les références sousrefs/tags
sont poussées, en plus des références spécifiées explicitement sur la ligne de commande )Vous avez également cette entrée " Pousser les branches et les balises avec une seule invocation " git push " "
Méfiez - vous , comme commenté par Aseem Kishore
push = +refs/heads/*
va forcer toutes vos branches .René Scheibe ajoute ce commentaire intéressant :
la source
push = +refs/heads/*
ligne force -pousse toutes vos branches. Cela m'a mordu tout à l'heure, alors pour info.--follow-tags
drapeau ajouté dans git 1.8.3, puis-je configurer mon installation git pour en faire la valeur par défaut?push.default
( git-scm.com/docs/git-config peut définir des actions par défaut sur push) (nothing
,matching
,upstream
,simple
comme dans stackoverflow.com/a/10002469/6309 ). Vous devez ajouter--follow-tag
explicitement.git push --follow-tags -f
n'a pas fonctionné pour moi.--follow-tags
paramètre est trompeur car seules les balises sous.git/refs/tags
sont prises en compte. Sigit gc
est exécuté, les balises sont déplacées de.git/refs/tags
vers.git/packed-refs
. Ensuite,git push --follow-tags ...
ne fonctionne plus comme prévu.Peut-être que cela aide quelqu'un:
la source
@since Git 2.4
git push --atomic origin <branch name> <tag>
la source
Git GUI a un bouton PUSH - pardonnez le jeu de mots, et la boîte de dialogue qu'il ouvre a une case à cocher pour les balises.
J'ai poussé une branche depuis la ligne de commande, sans balises, puis j'ai réessayé de pousser la branche en utilisant l'
--follow-tags
option décrite ci-dessus. L'option est décrite comme suit les balises annotées. Mes tags étaient de simples tags.J'avais corrigé quelque chose, marqué le commit avec le correctif (pour que les collègues puissent choisir le correctif), puis changé le numéro de version du logiciel et marqué la version que j'avais créée (afin que les collègues puissent cloner cette version).
Git est revenu en disant que tout était à jour. Il n'a pas envoyé les tags! Peut-être parce que les balises n'étaient pas annotées. Peut-être parce qu'il n'y avait rien de nouveau sur la branche.
Quand j'ai fait un push similaire avec Git GUI, les tags ont été envoyés.
Pour le moment, je vais pousser mes modifications sur mes télécommandes avec Git GUI et non avec la ligne de commande et
--follow-tags
.la source