In der Standardkonfiguration von git remote müssen Sie Tags explizit pushen (während sie automatisch zusammen mit Commits abgerufen werden, auf die sie verweisen). Sie müssen verwenden
$ git push <remote> tag <tagname>
um ein einzelnes Tag zu pushen, oder
$ git push <remote> --tags
um alle Tags zu pushen (oder git push --tags
um normalerweise auf die Standardfernbedienung zu pushen origin
).
Dies ist ein sehr beabsichtigtes Verhalten, um Push-Tags explizit zu machen. Das Schieben von Tags sollte normalerweise eine bewusste Wahl sein.
Zusammenfassend, was Junio C. Hamano geschrieben hat (verlinkt in Kommentaren von @Andre Miras)
Beim Abrufen interagieren Sie mit einem Remote-Repository, das jemand veröffentlicht hat. Dies bedeutet:
- Die dort vorhandenen Tags sind alle, die der Herausgeber sehen wollte, und
- Nicht nur Sie, sondern auch andere Personen sehen dieselben Tags.
Mit anderen Worten, Tags in Repositorys, aus denen Sie abrufen, sind öffentlich und freigegeben. Es erleichtert die Kommunikation zwischen Entwicklern, wenn es für alle einfach ist, dieselben Tags abzurufen.
Aus diesem Grund git fetch
"folgt" Tags automatisch Tags, dh es werden Tags heruntergeladen, wenn Revisionen heruntergeladen werden, auf die sie verweisen - mit anderen Worten, alle relevanten veröffentlichten Tags werden heruntergeladen .
Beim Pushing pushen Sie aus Ihrem Arbeits-Repository, das die meiste Zeit nicht öffentlich ist, und Tags in diesem Repository sind nicht als öffentlich konzipiert. Sie können Ihre eigenen lokalen Tags verwenden, um Ihren Fortschritt zu markieren. Daher ist es nicht sinnvoll, alle Tags in Ihrem Repository blind in das Repository zu verschieben, in das Sie Ihre Änderungen veröffentlichen, deren Tags per Definition öffentlich sind.
Aus diesem Grund müssen Sie das Tag explizit drücken, um das Tag als öffentlich zu markieren.
Alternativ können Sie die Konfiguration Remote drücken Sie immer alle Tags zu schieben, zB Put etwas wie das in Ihrer .git/config
:
[remote "veröffentlichen"] # oder wie auch immer es heißt
url = ...
push = + refs / Heads / *: Refs / Heads / *
push = + refs / tags / *: refs / tags / *
Dies bedeutet , dass alle Köpfe (alle Zweige) und alle Tags erzwungen werden müssen (wenn Sie nicht möchten, dass die Köpfe erzwungen werden, entfernen Sie das Präfix '+' aus refspec).
git push --follow-tags
kann jetzt nützlich sein, siehe meine Antwort unten