git fetch <gitserver> <remotetag>:<localtag>
===================================
Eu acabei de fazer isso. Primeiro, verifiquei a ortografia do nome da tag.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Isso me deu uma lista de tags no meu servidor git para escolher. O pôster original já sabia o nome de sua tag, portanto esta etapa não é necessária para todos. A saída era assim, embora a lista real fosse mais longa.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
Eu escolhi a etiqueta que eu queria e peguei isso e nada mais como se segue.
git fetch gitserver Fix_110
Em seguida, marquei isso na minha máquina local, dando à minha tag o mesmo nome.
git tag Fix_110 FETCH_HEAD
Eu não queria clonar o repositório remoto como outras pessoas sugeriram, pois o projeto no qual estou trabalhando é grande e quero desenvolver em um ambiente limpo e agradável. Eu sinto que isso está mais próximo das perguntas originais "Estou tentando descobrir como fazer o download de A PARTICULAR TAG" do que a solução que sugere a clonagem de todo o repositório. Não vejo por que alguém deveria ter uma cópia do código-fonte do Windows NT e Windows 8.1 se quiser ver o código-fonte do DOS 0.1 (por exemplo).
Também não queria usar o CHECKOUT, como outros sugeriram. Eu tinha um ramo verificado e não queria afetar isso. Minha intenção era buscar o software que eu queria para poder escolher algo e adicionar isso ao meu desenvolvimento.
Provavelmente, existe uma maneira de buscar a própria tag, em vez de apenas uma cópia da confirmação que foi marcada. Eu tive que marcar o compromisso buscado eu mesmo. EDIT: Ah sim, eu encontrei agora.
git fetch gitserver Fix_110:Fix_110
Onde você vê os dois pontos, ou seja, remote-name: local-name e aqui estão os nomes das tags. Isso funciona sem perturbar a árvore de trabalho, etc. Parece apenas copiar coisas do controle remoto para a máquina local, para que você tenha sua própria cópia.
git fetch gitserver --dry-run Fix_110:Fix_110
com a opção --dry-run adicionada, você poderá ver o que o comando faria, se você quiser verificar o que deseja. Então eu acho que um simples
git fetch gitserver remotetag:localtag
é a verdadeira resposta.
=
Uma observação separada sobre tags ... Quando inicio algo novo, normalmente identifico o repositório vazio após o git init, pois
git rebase -i XXXXX
requer uma confirmação e surge a pergunta "como você rebase as alterações que incluem sua primeira alteração de software?" Então, quando eu começo a trabalhar, eu faço
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
ou seja, criar uma confirmação antes da minha primeira alteração real e depois usar
git rebase -i EMPTY
se eu quiser refazer todo o meu trabalho, incluindo a primeira alteração .