So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde

GitGitBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob ein Git-Tag (Git-Markierung) an ein Remote-Repository (Entferntes Repository) gepusht wurde. Wir beginnen damit, zu untersuchen, wie Sie Tags in einem Remote-Repository anzeigen können, ohne es zu klonen, indem Sie den Befehl git ls-remote --tags verwenden.

Danach lernen Sie, wie Sie die Tags in Ihrem lokalen Repository mit denen im Remote-Repository vergleichen können, um so eventuelle Diskrepanzen oder nicht gepushte Tags zu identifizieren. Abschließend zeigen wir Ihnen, wie Sie testen und verifizieren können, dass Ihre lokalen Tags erfolgreich an das Remote-Repository gepusht wurden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BranchManagementGroup -.-> git/tag("Git Tags") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/init -.-> lab-560112{{"So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde"}} git/add -.-> lab-560112{{"So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde"}} git/status -.-> lab-560112{{"So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde"}} git/tag -.-> lab-560112{{"So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde"}} git/remote -.-> lab-560112{{"So prüfen Sie, ob ein Git-Tag an das Remote-Repository gepusht wurde"}} end

Führen Sie git ls-remote --tags aus

In diesem Schritt lernen wir, wie man Tags in einem Remote-Git-Repository anzeigen kann, ohne das gesamte Repository zu klonen. Dies ist nützlich, wenn Sie nur die verfügbaren Tags sehen müssen, beispielsweise, um eine bestimmte Version zum Herunterladen zu finden.

Wir verwenden den Befehl git ls-remote --tags. Dieser Befehl listet Referenzen (wie Branches und Tags) in einem Remote-Repository auf. Die Option --tags filtert die Ausgabe speziell, um nur Tags anzuzeigen.

Probieren wir es mit einem öffentlichen Git-Repository aus. Wir nehmen das Git-Repository des beliebten curl-Projekts als Beispiel.

Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

git ls-remote --tags https://github.com/curl/curl.git

Sie sollten eine lange Ausgabe sehen, ähnlich wie diese (die genaue Ausgabe variiert, wenn neue Tags hinzugefügt werden):

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9  refs/tags/curl-7_80_0
b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0  refs/tags/curl-7_81_0
...
z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4j3i2h1  refs/tags/curl-8_2_0

Jede Zeile in der Ausgabe repräsentiert ein Tag im Remote-Repository. Der erste Teil ist der Commit-Hash, auf den das Tag zeigt, und der zweite Teil ist der Tag-Name (mit refs/tags/ vorangestellt).

Dieser Befehl ist leistungsstark, da er es Ihnen ermöglicht, die Tags eines Remote-Repositorys zu untersuchen, ohne das gesamte Projektverlauf herunterladen zu müssen. Dies spart Zeit und Bandbreite, insbesondere bei großen Repositories.

Das Verständnis, wie man Remote-Tags anzeigt, ist der erste Schritt bei der Arbeit mit Tags, die außerhalb Ihres lokalen Repositorys existieren. In den nächsten Schritten werden wir untersuchen, wie man diese Remote-Tags mit Ihren lokalen Tags vergleicht und wie man Tags behandelt, die noch nicht an das Remote-Repository gepusht wurden.

Lokale und Remote-Tags vergleichen

Im vorherigen Schritt haben wir gesehen, wie man Tags in einem Remote-Repository auflistet. Jetzt sehen wir uns an, wie man diese Remote-Tags mit den Tags vergleicht, die in Ihrem lokalen Repository existieren. Dies ist nützlich, um zu prüfen, ob Ihr lokales Repository mit dem Remote-Repository auf dem neuesten Stand ist oder ob Sie lokale Tags haben, die noch nicht gepusht wurden.

Zunächst stellen wir sicher, dass wir uns in einem Git-Repository befinden. Wir erstellen für dieses Beispiel ein einfaches Repository. Navigieren Sie in Ihr Projektverzeichnis und initialisieren Sie ein neues Git-Repository:

cd ~/project
mkdir my-tag-repo
cd my-tag-repo
git init

Jetzt erstellen wir eine Datei und machen einen ersten Commit:

echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"

Als Nächstes erstellen wir ein lokales Tag. Wir erstellen ein einfaches (lightweight) Tag namens v1.0:

git tag v1.0

Jetzt listen wir unsere lokalen Tags mit dem Befehl git tag auf:

git tag

Sie sollten Folgendes sehen:

v1.0

Dies bestätigt, dass unser lokales Tag v1.0 erstellt wurde.

Um unsere lokalen Tags mit Remote-Tags zu vergleichen, benötigen wir normalerweise ein Remote-Repository. Da wir noch kein Remote-Repository für unser my-tag-repo eingerichtet haben, können wir das Vergleichskonzept simulieren.

Stellen Sie sich vor, Sie hätten ein Remote-Repository, das mit Ihrem lokalen Repository verknüpft ist. Sie könnten die neuesten Informationen aus dem Remote-Repository abrufen, ohne die Änderungen zu mergen, indem Sie git fetch --tags verwenden. Dieser Befehl holt alle Tags aus dem Remote-Repository ab.

Nach dem Abrufen können Sie git tag -l verwenden, um lokale Tags aufzulisten, und git ls-remote --tags origin (angenommen, 'origin' ist der Name Ihres Remote-Repositorys), um Remote-Tags aufzulisten. Durch den Vergleich der Ausgabe dieser beiden Befehle können Sie sehen, welche Tags lokal vorhanden sind, welche remote vorhanden sind und welche in beiden vorhanden sind.

Beispielsweise, wenn git tag -l v1.0 und v1.1 anzeigt, aber git ls-remote --tags origin nur v1.0 anzeigt, bedeutet dies, dass Ihr lokales Tag v1.1 noch nicht an das Remote-Repository gepusht wurde.

In dieser Lab-Umgebung haben wir keinen Remote-Server, an den wir pushen können. Das Verständnis der Befehle git tag (für lokale Tags) und git ls-remote --tags (für Remote-Tags) ist jedoch der Schlüssel zum Vergleich dieser Tags.

Im nächsten Schritt werden wir das Szenario untersuchen, in dem es lokale Tags gibt, die noch nicht im Remote-Repository vorhanden sind.

Ungepushte Tags testen

Im vorherigen Schritt haben wir ein lokales Tag v1.0 erstellt. Wenn wir ein Remote-Repository konfiguriert hätten, würde dieses Tag derzeit nur in unserem lokalen Repository und nicht auf dem Remote-Repository existieren. Dies ist ein "ungepushtes" Tag.

Wenn Sie ein Tag mit git tag erstellen, wird es standardmäßig lokal erstellt. Tags werden nicht automatisch mitgesendet, wenn Sie Ihre Branches mit git push an ein Remote-Repository pushen. Sie müssen die Tags explizit pushen.

Um ein einzelnes Tag an das Remote-Repository zu pushen, verwenden Sie den Befehl git push origin <tagname>. Beispielsweise würden wir, um unser v1.0-Tag an ein Remote-Repository namens origin zu pushen, git push origin v1.0 ausführen.

Um alle Ihre lokalen Tags an das Remote-Repository zu pushen, können Sie die Option --tags mit git push verwenden:

## Dieser Befehl würde alle lokalen Tags an das Remote-Repository pushen
## git push origin --tags

Da wir in dieser Lab-Umgebung kein Remote-Repository eingerichtet haben, können wir die Push-Operation nicht tatsächlich ausführen. Wir können jedoch das Konzept der ungepushten Tags verstehen und wissen, wie wir sie identifizieren können.

Wenn Sie mit einem Remote-Repository arbeiten würden, würde git status nach dem Erstellen eines lokalen Tags nicht explizit mitteilen, dass Sie ungepushte Tags haben. Der Befehl git status konzentriert sich hauptsächlich auf Änderungen in Ihrem Arbeitsverzeichnis und im Staging-Bereich sowie auf den Status Ihrer Branches im Vergleich zu ihren upstream-Gegenstücken.

Um zu sehen, welche lokalen Tags nicht auf dem Remote-Repository vorhanden sind, vergleichen Sie normalerweise die Ausgabe von git tag (lokale Tags) und git ls-remote --tags <remote-url> oder git ls-remote --tags <remote-name> (Remote-Tags), wie wir im vorherigen Schritt besprochen haben. Jedes Tag, das von git tag aufgelistet wird, aber nicht von git ls-remote --tags, ist ein ungepushtes Tag.

Das Verständnis des Unterschieds zwischen lokalen und Remote-Tags und das Wissen, wie Sie Ihre lokalen Tags pushen können, ist entscheidend, um Ihre Versionsmeilensteine mit anderen zu teilen und sicherzustellen, dass Ihr Remote-Repository die wichtigen Punkte in der Projektgeschichte genau widerspiegelt.

Dies schließt unsere Untersuchung zum Anzeigen und Vergleichen von lokalen und Remote-Tags ab. Sie haben gelernt, wie Sie Remote-Tags anzeigen können, ohne das Repository zu klonen, wie Sie lokale Tags auflisten können und das Konzept der ungepushten Tags kennen gelernt.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob Git-Tags an ein Remote-Repository gepusht wurden. Wir haben begonnen, indem wir den Befehl git ls-remote --tags verwendet haben, um die auf einem Remote-Repository vorhandenen Tags anzuzeigen, ohne es klonen zu müssen. Dies zeigt die Effizienz dieses Befehls beim Überprüfen von Remote-Tags.

Anschließend haben wir Methoden untersucht, um diese Remote-Tags mit lokalen Tags zu vergleichen. Dies ist entscheidend, um Unterschiede zu identifizieren und die Synchronisierung zwischen lokalen und Remote-Repositories sicherzustellen. Dieser Vergleich hilft dabei zu bestimmen, ob lokale Tags erfolgreich gepusht wurden oder ob dem lokalen Repository Remote-Tags fehlen.