git fetch <gitserver> <remotetag>:<localtag>
===================================
Ich habe das gerade gemacht. Zuerst stellte ich sicher, dass ich die Schreibweise des Tag-Namens kannte.
git ls-remote --tags gitserver; : or origin, whatever your remote is called
Dies gab mir eine Liste von Tags auf meinem Git-Server zur Auswahl. Das Originalplakat kannte bereits den Namen seines Tags, sodass dieser Schritt nicht für alle erforderlich ist. Die Ausgabe sah so aus, obwohl die reale Liste länger war.
8acb6864d10caa9baf25cc1e4857371efb01f7cd refs/tags/v5.2.2.2
f4ba9d79e3d760f1990c2117187b5010e92e1ea2 refs/tags/v5.2.3.1
8dd05466201b51fcaf4ca85897347d82fcb29518 refs/tags/Fix_109
9b5087090d9077c10ba22d99d5ce90d8a45c50a3 refs/tags/Fix_110
Ich wählte das Tag, das ich wollte, und holte es und nichts weiter wie folgt.
git fetch gitserver Fix_110
Ich habe dies dann auf meinem lokalen Computer markiert und meinem Tag den gleichen Namen gegeben.
git tag Fix_110 FETCH_HEAD
Ich wollte das Remote-Repository nicht klonen, wie andere vorgeschlagen haben, da das Projekt, an dem ich arbeite, groß ist und ich es in einer schönen, sauberen Umgebung entwickeln möchte. Ich bin der Meinung, dass dies näher an den ursprünglichen Fragen "Ich versuche herauszufinden, wie man einen bestimmten Tag herunterlädt" liegt als an der Lösung, die das Klonen des gesamten Repositorys vorschlägt. Ich verstehe nicht, warum jemand eine Kopie des Windows NT- und Windows 8.1-Quellcodes benötigen sollte, wenn er sich beispielsweise den DOS 0.1-Quellcode ansehen möchte.
Ich wollte CHECKOUT auch nicht verwenden, wie andere vorgeschlagen haben. Ich hatte eine Filiale ausgecheckt und wollte das nicht beeinflussen. Meine Absicht war es, die Software zu holen, die ich wollte, damit ich etwas auswählen und das zu meiner Entwicklung hinzufügen konnte.
Es gibt wahrscheinlich eine Möglichkeit, das Tag selbst abzurufen, anstatt nur eine Kopie des Commits, das markiert wurde. Ich musste das abgerufene Commit selbst markieren. EDIT: Ah ja, ich habe es jetzt gefunden.
git fetch gitserver Fix_110:Fix_110
Wo Sie den Doppelpunkt sehen, ist das Remote-Name: lokaler Name und hier sind sie die Tag-Namen. Dies läuft, ohne den Arbeitsbaum usw. zu stören. Es scheint nur Dinge von der Fernbedienung auf den lokalen Computer zu kopieren, sodass Sie Ihre eigene Kopie haben.
git fetch gitserver --dry-run Fix_110:Fix_110
Mit der hinzugefügten Option --dry-run können Sie sehen, was der Befehl tun würde, wenn Sie überprüfen möchten, was Sie möchten. Also ich denke ein einfaches
git fetch gitserver remotetag:localtag
ist die wahre Antwort.
=
Ein separater Hinweis zu Tags ... Wenn ich etwas Neues starte, tagge ich normalerweise das leere Repository nach git init, da
git rebase -i XXXXX
erfordert ein Commit, und es stellt sich die Frage: "Wie können Sie Änderungen, die Ihre erste Softwareänderung beinhalten, neu begründen?" Wenn ich anfange zu arbeiten, tue ich das
git init
touch .gitignore
[then add it and commit it, and finally]
git tag EMPTY
dh erstelle ein Commit vor meiner ersten echten Änderung und verwende es später
git rebase -i EMPTY
wenn ich meine gesamte Arbeit, einschließlich der ersten Änderung , neu definieren möchte .