git fetch <gitserver> <remotetag>:<localtag>
===================================
L'ho appena fatto. Innanzitutto mi sono assicurato di conoscere l'ortografia del nome del tag.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Questo mi ha dato un elenco di tag sul mio server Git tra cui scegliere. Il poster originale conosceva già il nome del suo tag, quindi questo passaggio non è necessario per tutti. L'output sembrava così, sebbene la lista reale fosse più lunga.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
Ho scelto il tag che volevo e l'ho preso e niente di più come segue.
git fetch gitserver Fix_110
Ho quindi taggato questo sul mio computer locale, dando al mio tag lo stesso nome.
git tag Fix_110 FETCH_HEAD
Non volevo clonare il repository remoto come altre persone hanno suggerito di fare, poiché il progetto a cui sto lavorando è grande e voglio svilupparmi in un ambiente pulito e gradevole. Penso che questo sia più vicino alle domande originali "Sto cercando di capire come scaricare A PARTICULAR TAG" rispetto alla soluzione che suggerisce la clonazione dell'intero repository. Non vedo perché qualcuno dovrebbe avere una copia del codice sorgente di Windows NT e Windows 8.1 se vogliono guardare il codice sorgente DOS 0.1 (per esempio).
Inoltre non volevo usare CHECKOUT come altri hanno suggerito. Avevo controllato un ramo e non volevo influenzarlo. La mia intenzione era quella di recuperare il software che volevo, in modo da poter scegliere qualcosa e aggiungerlo al mio sviluppo.
C'è probabilmente un modo per recuperare il tag stesso piuttosto che solo una copia del commit che è stato taggato. Ho dovuto etichettare me stesso il commit recuperato. EDIT: Ah sì, l'ho trovato ora.
git fetch gitserver Fix_110:Fix_110
Dove vedi i due punti, questo è il nome remoto: nome locale e qui sono i nomi dei tag. Questo funziona senza stravolgere l'albero di lavoro, ecc. Sembra solo copiare cose dal telecomando al computer locale in modo da avere la tua copia.
git fetch gitserver --dry-run Fix_110:Fix_110
con l'opzione --dry-run aggiunta ti permetterà di dare un'occhiata a cosa farebbe il comando, se vuoi verificarne quello che vuoi. Quindi immagino un semplice
git fetch gitserver remotetag:localtag
è la vera risposta.
=
Una nota separata sui tag ... Quando inizio qualcosa di nuovo di solito taggo il repository vuoto dopo git init, da allora
git rebase -i XXXXX
richiede un commit e sorge la domanda "come si possono reimpostare le modifiche che includono la prima modifica del software?" Quindi quando inizio a lavorare lo faccio
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
cioè creare un commit prima del mio primo vero cambiamento e poi usarlo
git rebase -i EMPTY
se voglio rifare tutto il mio lavoro, incluso il primo cambiamento .