git fetch <gitserver> <remotetag>:<localtag>
===================================
Je viens de faire ça. Je me suis d'abord assuré que je connaissais l'orthographe du nom de la balise.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Cela m'a donné une liste de balises sur mon serveur git à choisir. L'affiche originale connaissait déjà le nom de son tag, donc cette étape n'est pas nécessaire pour tout le monde. La sortie ressemblait à ceci, bien que la vraie liste soit plus longue.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
J'ai choisi la balise que je voulais et je l'ai récupérée et rien de plus comme suit.
git fetch gitserver Fix_110
J'ai ensuite marqué cela sur ma machine locale, donnant à ma balise le même nom.
git tag Fix_110 FETCH_HEAD
Je ne voulais pas cloner le référentiel distant comme d'autres personnes l'ont suggéré, car le projet sur lequel je travaille est grand et je veux développer dans un environnement propre et agréable. Je pense que cela est plus proche des questions originales "J'essaie de comprendre comment télécharger UN ÉTIQUETTE PARTICULIÈRE" que la solution qui suggère de cloner l'ensemble du référentiel. Je ne vois pas pourquoi quelqu'un devrait avoir une copie du code source de Windows NT et Windows 8.1 s'ils veulent regarder le code source DOS 0.1 (par exemple).
Je ne voulais pas non plus utiliser CHECKOUT comme d'autres l'ont suggéré. J'ai fait vérifier une succursale et je ne voulais pas affecter cela. Mon intention était de récupérer le logiciel que je voulais pour pouvoir choisir quelque chose et l'ajouter à mon développement.
Il existe probablement un moyen de récupérer la balise elle-même plutôt qu'une simple copie de la validation qui a été balisée. J'ai dû marquer moi-même le commit récupéré. EDIT: Ah oui, je l'ai trouvé maintenant.
git fetch gitserver Fix_110:Fix_110
Où vous voyez les deux points, c'est nom-distant: nom-local et ici ce sont les noms des balises. Cela fonctionne sans perturber l'arborescence de travail, etc. Il semble simplement copier des éléments de la télécommande vers la machine locale afin que vous ayez votre propre copie.
git fetch gitserver --dry-run Fix_110:Fix_110
avec l'option --dry-run ajoutée, vous pourrez voir ce que la commande ferait si vous voulez vérifier ce que vous voulez. Donc je suppose qu'un simple
git fetch gitserver remotetag:localtag
est la vraie réponse.
=
Une note séparée sur les balises ... Quand je commence quelque chose de nouveau, je marque généralement le référentiel vide après git init, car
git rebase -i XXXXX
nécessite un commit, et la question se pose "comment pouvez-vous rebaser les changements qui incluent votre premier changement de logiciel?" Donc, quand je commence à travailler, je le fais
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
c'est-à-dire créer un commit avant mon premier vrai changement et ensuite l'utiliser plus tard
git rebase -i EMPTY
si je veux rebaser tout mon travail, y compris le premier changement .