git fetch <gitserver> <remotetag>:<localtag>
===================================
Я только что сделал это. Сначала я убедился, что знаю правописание имени тега.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Это дало мне список тегов на моем git-сервере на выбор. Оригинальный постер уже знал имя своего тега, поэтому этот шаг не нужен для всех. Вывод выглядел так, хотя реальный список был длиннее.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
Я выбрал метку, которую хотел, и получил ее, и ничего больше, как указано ниже.
git fetch gitserver Fix_110
Затем я отметил это на своем локальном компьютере, присвоив этому тегу то же имя.
git tag Fix_110 FETCH_HEAD
Я не хотел клонировать удаленный репозиторий, как предлагали другие люди, так как проект, над которым я работаю, большой, и я хочу развиваться в хорошей чистой среде. Я чувствую, что это ближе к первоначальным вопросам «Я пытаюсь выяснить, как загрузить A PARTICULAR TAG», чем к решению, которое предполагает клонирование всего хранилища. Я не понимаю, почему кто-то должен иметь копию исходного кода Windows NT и Windows 8.1, если он хочет взглянуть на исходный код DOS 0.1 (например).
Я также не хотел использовать CHECKOUT, как предлагали другие. Я проверил ветку и не хотел влиять на это. Мое намерение состояло в том, чтобы получить программное обеспечение, которое я хотел, чтобы я мог что-то выбрать и добавить это в свою разработку.
Вероятно, есть способ получить сам тег, а не просто копию коммита, который был помечен. Мне пришлось пометить извлеченный коммит сам. РЕДАКТИРОВАТЬ: Ах да, я нашел это сейчас.
git fetch gitserver Fix_110:Fix_110
Там, где вы видите двоеточие, это remote-name: local-name, а здесь это имена тегов. Это работает без нарушения рабочего дерева и т. Д. Просто кажется, что вы копируете данные с удаленного на локальный компьютер, чтобы у вас была собственная копия.
git fetch gitserver --dry-run Fix_110:Fix_110
с добавленной опцией --dry-run вы сможете посмотреть, что будет делать команда, если вы хотите проверить, что вы хотите. Так что я думаю, простой
git fetch gitserver remotetag:localtag
это реальный ответ.
знак равно
Отдельное примечание о тегах ... Когда я запускаю что-то новое, я обычно отмечаю пустой репозиторий после git init, так как
git rebase -i XXXXX
требует фиксации, и возникает вопрос: «Как вы перебазируете изменения, которые включают ваше первое изменение программного обеспечения?» Поэтому, когда я начинаю работать, я делаю
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
т.е. создать коммит до моего первого реального изменения, а затем использовать позже
git rebase -i EMPTY
если я хочу перебазировать всю свою работу, включая первое изменение .