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 donc j'ai couru
git tag mytag master
quand j'exécute git tag
sur mon ordinateur portable l'étiquette mytag
est affichée. Je veux alors pousser ceci au dépôt distant donc j'ai cette étiquette sur tous mes clients, donc j'exécute git push
mais j'ai eu le message:
Everything up-to-date
Et si je vais à mon bureau et exécuter git pull
et ensuite git tag
aucune étiquette n'est affichée.
j'ai aussi essayé de faire une modification mineure sur un fichier du projet, puis de le pousser sur le serveur. Après cela, je pourrais tirer le changement du serveur à mon ordinateur de bureau, mais il n'y a toujours pas de balise quand on exécute git tag
sur mon ordinateur de bureau.
Comment puis-je pousser mon étiquette vers le dépôt distant pour que tous les ordinateurs clients puissent la voir?
10 réponses
Pour pousser un unique tag:
git push origin <tag_name>
et la commande suivante devrait appuyer sur toutes les étiquettes (non recommandé):
git push --tags
git push --follow-tags
il s'agit d'une option saine introduite dans le Git 1.8.3:
git push --follow-tags
Il repousse à la fois s'engage et seules les variables qui sont à la fois:
- annoté
- accessible (un ancêtre) de la poussée commet
c'est sain parce que:
- vous devez seulement pousser les étiquettes annotées à la à distance, et de garder léger balises pour le développement local, pour éviter la balise affrontements. Voir aussi: Quelle est la différence entre une étiquette annotée et non annotée?
- il ne poussez pas annoté balises d'autres branches
c'est pour ces raisons qu'il faut éviter --tags
.
Git 2.4 a ajouté l'option push.followTags
pour activer ce drapeau par défaut qui vous pouvez définir avec:
git config --global push.followTags true
pour pousser spécifique, une étiquette font suite
git push origin tag_name
pour développer sur réponse de Trevor , vous pouvez pousser une seule étiquette ou la totalité de votre tags à la fois.
Pousser d'une Seule Balise
git push <remote> <tag>
il s'agit d'un résumé de la documentation pertinente qui explique ceci (certains options de commande omises pour la brièveté):
git push [[<repository> [<refspec>…]] <refspec>...
le format d'un paramètre
<refspec>
est ... la source ref<src>
, suivi d'un:
, suivi de la destination réf<dst>
...le
<dst>
indique quel ref du côté distant est mis à jour avec ce pousser...si:<dst>
est omis, le même ref que<src>
sera mis à jour...étiquette
<tag>
signifie la même chose querefs/tags/<tag>:refs/tags/<tag>
.
Pousser Tous Vos Tags à la Fois
git push --tags <remote>
# Or
git push <remote> --tags
Voici un résumé de la documentation pertinente (quelques options de commande omis par souci de concision):
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 explicitement listés sur la ligne de commande.
vous pouvez pousser les étiquettes comme ceci git push --tags
ne sont pas envoyées au dépôt distant par la commande git push. Nous devons envoyer explicitement ces balises au serveur distant en utilisant la commande suivante:
git push origin <tagname>
nous pouvons pousser toutes les étiquettes à la fois en utilisant la commande ci-dessous:
git push origin --tags
voici quelques ressources pour des détails complets sur le marquage git:
vous pouvez pousser vos étiquettes locales simplement par 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
j'utilise git push <remote-name> tag <tag-name>
pour m'assurer que je pousse une étiquette. 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>.
Veuillez ne pas l'utiliser, si vous cherchez seulement pour une commande parce que l'objectif principal de cette solution est de vous présenter une façon de solutions !
Pour rendre la vie plus facile - j'ai écrit un script git-cheat-sheet ,qui contient quelques commandes utiles , y compris ce qui suit:
. /git_commands.sh -push_tag TAG_NAME
si vous travaillez dans une succursale:
git push --tags origin branch_name