2578 votes

Comment pousser une balise vers un dépôt distant en utilisant Git ?

J'ai cloné un dépôt Git distant sur mon ordinateur portable, puis j'ai voulu ajouter une balise.

git tag mytag master

Quand je cours git tag sur mon ordinateur portable le tag mytag est affiché. Je veux ensuite pousser ce fichier vers le référentiel distant afin d'avoir cette balise sur tous mes clients. git push mais j'ai compris le message :

Tout est à jour

Et si je vais sur mon bureau et que je lance git pull et ensuite git tag aucune étiquette n'est montrée.

J'ai également essayé d'effectuer une modification mineure sur un fichier du projet, puis de le pousser vers le serveur. Ensuite, j'ai pu transférer la modification du serveur vers mon ordinateur de bureau, mais il n'y a toujours pas de balise lors de l'exécution de la commande git tag sur mon ordinateur de bureau.

Comment puis-je pousser ma balise vers le référentiel distant afin que tous les ordinateurs clients puissent la voir ?

0 votes

Veuillez accepter la réponse avec plus de upvotes, c'est mieux ici.

4140voto

Trevor Points 5062

Pour pousser un simple étiquette :

git push origin <tag_name>

Et la commande suivante devrait pousser tous tags ( non recommandé ):

# not recommended
git push --tags

497 votes

Je recommande de ne pas utiliser ou former les autres à utiliser git push --tags car il peut être très très difficile de se débarrasser des mauvaises étiquettes lorsque vos collègues sont formés pour pousser toutes les étiquettes, car les gens continuent à pousser les anciennes mauvaises étiquettes qu'ils ont localement chaque fois qu'ils veulent pousser une nouvelle étiquette. C'est pour cette raison que je ne conseillerai jamais à quelqu'un d'utiliser git push origin <tag_name> maintenant.

47 votes

Pour pousser un déplacé étiquette : git push origin <tag_name> --force

40 votes

Eh bien @ScottJungwirth je pense qu'en tant que développeur il faut être prudent. Sinon, vous pourriez tout aussi bien conseiller de ne pas enseigner du tout les commandes disponibles.

1366voto

Ciro Santilli Points 3341

git push --follow-tags

Il s'agit d'une option saine introduite dans Git 1.8.3 :

git push --follow-tags

Il pousse les deux commits et seulement les tags qui sont les deux :

  • annoté
  • atteignable (un ancêtre) à partir des commits poussés

C'est sain parce que :

C'est pour ces raisons que --tags doit être évitée.

Git 2.4 a ajouté le site push.followTags pour activer ce drapeau par défaut que vous pouvez définir avec :

git config --global push.followTags true

ou en ajoutant followTags = true à la [push] de votre ~/.gitconfig fichier.

1 votes

Je n'ai pas compris tout de suite qu'il y avait un rapport entre "annoté" et "accessible à partir des commits poussés". J'espérais que cela pousserait toutes les balises atteignables, qu'elles soient annotées ou non. Peut-être qu'il faut éditer pour être sûr que ce n'est pas un OU ?

29 votes

Cela ne fonctionne pas pour moi dans git 2.5.0, mais git push origin --tags fait.

0 votes

@nnyby veuillez fournir un exemple minimal avec toutes les commandes nécessaires de la création du repo à l'échec et le poster sur un gist pour que je puisse essayer de reproduire ;-)

282voto

solgar Points 1467

Pour être plus précis, il faut faire ce qui suit git push origin tag_name

110voto

Cupcake Points 22154

Pour développer Réponse de Trevor vous pouvez pousser une seule étiquette ou toutes vos étiquettes en même temps. tags en une seule fois.

Pousser une seule étiquette

git push <remote> <tag>

Il s'agit d'un résumé de la documentation pertinente qui explique ceci (certaines options de commande omises par souci de concision) :

git push [[<repository> [<refspec>…]]

<refspec>...

Le format d'un <refspec> le paramètre est la source ref <src> , suivi de deux points : suivi de la destination réf <dst>

El <dst> indique quel ref du côté distant est mis à jour avec ce poussée Si :<dst> est omise, le même ref que <src> sera mis à jour

étiquette <tag> signifie la même chose que refs/tags/<tag>:refs/tags/<tag> .

Poussez toutes vos étiquettes en même temps

git push --tags <remote>
# Or
git push <remote> --tags

Voici un résumé de la documentation pertinente (certaines options de commande sont omises pour des raisons de brièveté) :

git push [--all | --mirror | --tags] [<repository> [<refspec>…]]

--tags

Tous les arbitres sous refs/tags sont poussées, en plus des refspecs explicitement explicitement listées sur la ligne de commande.

0 votes

L'exemple est d'omettre le mot clé tag . par exemple git push origin tag funny-tag-1 .

1 votes

@JamesThomasMoon1979 Vous n'en avez pas besoin. Il suffit de pousser une seule étiquette vers l'origine comme ceci : git push origin my-tag (Je viens de l'essayer !)

0 votes

J'utilisais la version 1.9.1 et vous @AndresF. ?

50voto

Vous pouvez pousser les balises comme ceci git push --tags

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X