Wie sehe ich Remote-Tags?

136

Woher wissen Sie in Atlassian SourceTree, welche Tags nur lokal und welche auch remote sind?

Wenn Sie ein Tag erstellen, erhalten Sie die Option "Tag verschieben an: ...". Wie können Sie jedoch feststellen, ob ein Tag nach dem Erstellen verschoben wurde oder nicht? Ich kann alle meine Tags lokal sehen, aber ich muss sicherstellen, dass sie in Remote vorhanden sind, damit andere Entwickler sie abrufen können.

cprcrack
quelle
Ich habe meine Antwort unten aktualisiert , um Atlassian SourceTree speziell anzusprechen.
VonC

Antworten:

121

Auch ohne Klonen oder Abrufen können Sie die Liste der Tags im Upstream-Repo überprüfen mit git ls-remote:

git ls-remote --tags /url/to/upstream/repo

(wie in " Beim Auflisten von git-ls-remote dargestellt, warum steht ^{}nach dem Tag-Namen " "? ")

xbmono zeigt in den Kommentaren, dass Anführungszeichen benötigt werden:

git ls-remote --tags /some/url/to/repo "refs/tags/MyTag^{}"

Beachten Sie, dass Sie Ihre Commits und Tags immer in einem Befehl mit (git 1.8.3+, April 2013) übertragen können:

git push --follow-tags

Siehe Push-Git-Commits und -Tags gleichzeitig .


In Bezug auf Atlassian SourceTree speziell:

Beachten Sie, dass in diesem Thread NUR SourceTree lokale Tags anzeigt.

SRCTREEWIN-4015Seit Dezember 2015 ist eine RFE (Request for Enhancement) angemeldet .

Eine einfache Problemumgehung:

Eine Liste nur ungepusster Tags anzeigen?

Git Push - Tags

oder aktivieren Sie das Kontrollkästchen " Push all tags" im Dialogfeld "Push". Alle Tags werden auf Ihre Fernbedienung übertragen.

https://community.atlassian.com/tnckb94959/attachments/tnckb94959/sourcetree-questions/10923/1/Screen%20Shot%202015-12-15%20at%208.49.48%20AM.png

Auf diese Weise sind Sie "sicher, dass sie in Remote vorhanden sind, damit andere Entwickler sie abrufen können".

VonC
quelle
3
Das ist großartig, aber ich habe gefragt, wie ich es mit Atlassian SourceTree und nicht mit der Git-Befehlszeile wissen soll.
cprcrack
Ich habe versucht refs/tags/MyTag^{}, eine Commit-ID mit diesem Tag zu verknüpfen, aber dieser Befehl git ls-remotegibt nichts zurück. Gibt es eine Möglichkeit, die Commit-ID eines dereferenzierten Tags abzurufen?
xbmono
@xbmono Dies sollte stackoverflow.com/a/12939216/6309 sein
VonC
1
@xbmono Guter Fang! Ich habe Ihren Kommentar zur besseren Sichtbarkeit in die Antwort aufgenommen.
VonC
145

Sie können die Tags im Remote-Repository mit auflisten ls-remoteund dann überprüfen, ob sie vorhanden sind. Angenommen, der Name der Remote-Referenz lautet wie originfolgt.

git ls-remote --tags origin

Und Sie können lokale Tags mit auflisten tag.

git tag

Sie können die Ergebnisse manuell oder per Skript vergleichen.

Landys
quelle
1
@VonC Du bist schneller. :) Ich versuche mehr gitFragen zu lösen , um mich damit vertraut zu machen git. :)
Landys
Kein Problem: So lerne ich Git seit Ende 2008.
VonC
1
Das ist großartig, aber ich habe gefragt, wie ich es mit Atlassian SourceTree und nicht mit der Git-Befehlszeile wissen soll.
cprcrack
2
@cprcrack Sie haben also gefragt, ob Atlassian SourceTree die Funktion zum Anzeigen der Remote-Tags in der GUI bietet, oder? Ich habe einen groben Blick und es scheint nicht. Aber warum nicht einfach auf das Menü klicken Actions -> Open in Terminalund dann eingeben git ls-remote --tags originund ausführen?
Landys
2
@ Landys Danke, das ist nützlich. Beim Auflisten von Remote-Tags werden doppelte Einträge angezeigt. Sie haben eine diff-ID, aber denselben Tag-Namen, außer mit dem Postfix ^ {}. Beispiel: release-v1.0, release-v1.0 ^ {}, release-v1.1, release-v1.1 ^ {} usw. Wissen Sie, was diese zusätzlichen Einträge sind? Obwohl die zusätzlichen Einträge eine diff-ID haben, gibt git log <ID> dieselbe Ausgabe aus.
Shiouming