web-dev-qa-db-fra.com

Comment pousser une balise vers un référentiel distant à l'aide de Git?

J'ai cloné un référentiel Git distant sur mon ordinateur portable, puis je voulais ajouter une balise

git tag mytag master

Lorsque je lance git tag sur mon ordinateur portable, la balise mytag est affichée. Je souhaite ensuite envoyer ceci au référentiel distant pour que cette balise soit visible sur tous mes clients. Je lance donc git Push mais j'ai le message suivant:

Tout est à jour

Et si je vais sur mon bureau et lancez git pull puis git tag aucune balise n'est affichée.

J'ai également essayé d'apporter une modification mineure à un fichier du projet, puis de le transférer au serveur. Après cela, je pouvais extraire la modification du serveur vers mon ordinateur de bureau, mais il n’existait toujours pas de balise lors de l’exécution de git tag sur mon ordinateur de bureau.

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

2026
Jonas

git Push --follow-tags

Ceci est une option saine introduite dans Git 1.8.3:

_git Push --follow-tags
_

Il pousse les deux commits et uniquement les balises qui sont les deux:

  • annoté
  • accessible (un ancêtre) des commits poussés

Ceci est sain parce que:

C'est pour ces raisons que _--tags_ devrait être évité.

Git 2.4 a ajouté l'option _Push.followTags_ pour activer cet indicateur par défaut que vous pouvez définir avec:

_git config --global Push.followTags true
_

Pour pousser un single tag:

git Push Origin <tag_name>

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

git Push --tags
3348
Trevor

Pour pousser spécifique, une balise faire suivant git Push Origin tag_name

250
solgar

Pour développer réponse de Trevor , vous pouvez utiliser un seul tag ou tous vos tags en même temps.

Pousser une seule étiquette

git Push <remote> <tag>

Ceci est un résumé de documentation pertinente qui explique cela (certaines options de commande sont omises pour des raisons de brièveté):

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

<refspec>...

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

Le <dst> indique quelle référence du côté distant est mise à jour avec ce Push… Si :<dst> est omis, la même référence que <src> sera mise à jour…

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

Poussez tous vos tags à la fois

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

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

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

--tags

Toutes les références sous refs/tags sont poussées, en plus des références spécifiées explicitement sur la ligne de commande.

89
user456814

Les balises ne sont pas envoyées au référentiel distant par la commande git Push. Nous devons envoyer explicitement ces balises au serveur distant à l'aide de la commande suivante:

git Push Origin <tagname>

Nous pouvons pousser tous les tags à la fois en utilisant la commande ci-dessous:

git Push Origin --tags

Voici quelques ressources pour des détails complets sur le marquage git:

http://www.cubearticle.com/articles/more/git/git-tag

http://wptheming.com/2011/04/add-remove-github-tags

49
Ashutosh Meher

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

46

Vous pouvez pousser tous les tags locaux en utilisant simplement la commande git Push --tags.

$ git tag                         # see tag lists
$ git Push Origin <tag-name>      # Push a single tag
$ git Push --tags                 # Push all local tags 
28
Sajib Khan

J'utilise git Push <remote-name> tag <tag-name> pour m'assurer que je pousse un tag. Je l'utilise comme: git Push Origin tag v1.0.1. Ce modèle est basé sur la documentation (man git-Push):

OPTIONS
   ...
   <refspec>...
       ...
       tag <tag> means the same as refs/tags/<tag>:refs/tags/<tag>.
7
Carl G