So überprüfen Sie, ob ein Git-Tag im Remote-Repository existiert

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) in einem Remote-Repository (Entfernten Repository) existiert. Wir werden verschiedene Methoden untersuchen, um dies zu erreichen, beginnend mit der Auflistung aller Remote-Tags ohne das Klonen des Repositorys mithilfe von git ls-remote --tags.

Danach lernen Sie, wie Sie Remote-Tags in Ihre lokale Umgebung abrufen und dann die Existenz eines bestimmten Tags überprüfen können. Dieses praktische Lab wird Sie mit den Fähigkeiten ausstatten, um Tags in Remote-Git-Repositories effizient zu verwalten und zu überprüfen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/tag("Git Tags") git/CollaborationandSharingGroup -.-> git/fetch("Download Updates") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/tag -.-> lab-560108{{"So überprüfen Sie, ob ein Git-Tag im Remote-Repository existiert"}} git/fetch -.-> lab-560108{{"So überprüfen Sie, ob ein Git-Tag im Remote-Repository existiert"}} git/remote -.-> lab-560108{{"So überprüfen Sie, ob ein Git-Tag im Remote-Repository existiert"}} end

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

In diesem Schritt lernen wir, wie man die verfügbaren Tags (Markierungen) in einem Remote-Git-Repository (Entfernten Git-Repository) anzeigt, ohne das gesamte Repository zu klonen. Dies ist nützlich, wenn Sie nur die Release-Versionen oder bestimmte Punkte in der Projektgeschichte sehen möchten.

Wir verwenden den Befehl git ls-remote --tags. Dieser Befehl listet die 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 verwenden das eigene Repository des Git-Projekts auf GitHub als Beispiel.

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

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

Sie werden eine Liste von Tags aus dem Git-Repository sehen. Die Ausgabe sieht in etwa so aus:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9  refs/tags/v2.30.0
b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9a1  refs/tags/v2.30.0^{}
c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9a1b2  refs/tags/v2.30.1
d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9a1b2c3  refs/tags/v2.30.1^{}
... (viele weitere Zeilen)

Jede Zeile in der Ausgabe repräsentiert einen Tag. Die lange Zeichenfolge am Anfang jeder Zeile ist der Commit-Hash (Bestätigungs-Hash), auf den der Tag zeigt. Der Teil nach refs/tags/ ist der Name des Tags. Sie können Zeilen sehen, die mit ^{} enden. Diese repräsentieren das Commit-Objekt, auf das ein einfacher Tag (lightweight tag) zeigt, oder das getaggte Objekt selbst für einen annotierten Tag. Vorerst können Sie sich auf die Zeilen ohne ^{} konzentrieren, da sie direkt den Tag-Namen und den Commit anzeigen, auf den er verweist.

Dieser Befehl ist leistungsstark, da er es Ihnen ermöglicht, die verfügbaren Tags in einem Remote-Repository zu überprüfen, ohne die gesamte Projektgeschichte herunterzuladen. Dies spart Zeit und Bandbreite, insbesondere bei großen Repositories.

Abrufen und Prüfen von Git-Tags

Im vorherigen Schritt haben wir gesehen, wie man Remote-Tags (Entfernte Markierungen) auflistet, ohne das Repository zu klonen. Jetzt lernen wir, wie man diese Tags in unsere lokale Umgebung abruft und anzeigt.

Um Tags aus einem Remote-Repository abzurufen, verwenden wir den Befehl git fetch mit der Option --tags. Dieser Befehl lädt die Tags aus dem Remote-Repository herunter, ohne sie in Ihre lokalen Branches zu mergen.

Zunächst erstellen wir ein neues Verzeichnis und initialisieren dort ein Git-Repository. Dies wird unser lokaler Arbeitsbereich sein.

cd ~/project
mkdir git-tags-demo
cd git-tags-demo
git init

Jetzt rufen wir die Tags aus dem Repository des Git-Projekts ab. Wir müssen die Remote-URL angeben.

git fetch --tags https://github.com/git/git.git

Sie werden eine Ausgabe sehen, die anzeigt, dass Git Objekte herunterlädt und Referenzen verarbeitet. Dies kann je nach Ihrer Internetverbindung einen Moment dauern.

remote: Enumerating objects: XXXX, done.
remote: Counting objects: 100% (XXXX/XXXX), done.
remote: Compressing objects: 100% (XXXX/XXXX), done.
remote: Total XXXX (delta XXXX), reused XXXX (delta XXXX), pack-reused XXXX
Receiving objects: 100% (XXXX/XXXX), XXX.XX MiB | XX.XX MiB/s, done.
Resolving deltas: 100% (XXXX/XXXX), done.
From https://github.com/git/git.git
 * [new tag]         v2.0.0     -> v2.0.0
 * [new tag]         v2.0.0-rc0 -> v2.0.0-rc0
... (viele weitere Zeilen)

Nachdem der Abruf abgeschlossen ist, sind die Tags jetzt lokal verfügbar. Um die abgerufenen Tags anzuzeigen, können Sie den Befehl git tag verwenden.

git tag

Dieser Befehl listet alle Tags in Ihrem lokalen Repository auf. Da wir gerade die Tags aus dem Remote-Repository abgerufen haben, sollten Sie eine lange Liste von Versions-Tags sehen.

v2.0.0
v2.0.0-rc0
v2.0.0-rc1
v2.0.0-rc2
v2.0.1
... (viele weitere Tags)

Sie können durch die Liste scrollen, um die verschiedenen abgerufenen Tags zu sehen. Drücken Sie q, um die Tag-Listenansicht zu verlassen.

Durch das Abrufen von Tags haben Sie jetzt lokale Referenzen auf bestimmte Punkte in der Geschichte des Remote-Repositorys, auch wenn Sie das gesamte Projekt nicht geklont haben. Dies ist eine nützliche Möglichkeit, auf Release-Versionen oder andere wichtige Meilensteine zuzugreifen.

Überprüfen eines bestimmten Remote-Tags

In den vorherigen Schritten haben wir gelernt, wie man alle Tags aus einem Remote-Repository auflistet und abruft. Manchmal interessiert man sich möglicherweise nur dafür, zu überprüfen, ob ein bestimmter Tag in einem Remote-Repository existiert, ohne alle Tags abzurufen.

Sie können dies erreichen, indem Sie den Befehl git ls-remote --tags mit Filterwerkzeugen wie grep kombinieren.

Lassen Sie uns überprüfen, ob der Tag v2.30.0 im Repository des Git-Projekts existiert, indem wir diese Methode verwenden.

Stellen Sie sicher, dass Sie sich noch im Verzeichnis ~/project/git-tags-demo befinden.

cd ~/project/git-tags-demo

Jetzt führen Sie den folgenden Befehl aus:

git ls-remote --tags https://github.com/git/git.git | grep "v2.30.0"

Dieser Befehl macht zwei Dinge:

  1. git ls-remote --tags https://github.com/git/git.git: Listet alle Tags im Remote-Repository auf, genau wie wir es in Schritt 1 getan haben.
  2. | grep "v2.30.0": Dies ist eine Pipe (|), die die Ausgabe des ersten Befehls als Eingabe an den grep-Befehl sendet. grep "v2.30.0" sucht nach Zeilen, die den Text "v2.30.0" enthalten.

Wenn der Tag v2.30.0 existiert, werden Sie eine Ausgabe ähnlich der folgenden sehen:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9  refs/tags/v2.30.0
b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9a1  refs/tags/v2.30.0^{}

Wenn der Tag nicht existiert, würde der grep-Befehl keine übereinstimmenden Zeilen finden, und es würde keine Ausgabe geben.

Diese Technik ist sehr effizient, wenn Sie nur überprüfen müssen, ob ein oder einige wenige bestimmte Tags in einem Remote-Repository vorhanden sind, ohne alle Tags herunterzuladen. Es ist eine schnelle Möglichkeit, zu überprüfen, ob eine bestimmte Version oder ein bestimmter Release remote verfügbar ist.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man überprüft, ob ein Git-Tag in einem Remote-Repository existiert. Zunächst haben wir untersucht, wie man git ls-remote --tags verwendet, um alle verfügbaren Tags in einem Remote-Repository aufzulisten, ohne das Repository zu klonen. Dabei haben wir gezeigt, wie man die Tag-Namen und die zugehörigen Commit-Hashes direkt aus dem Remote-Repository anzeigen kann. Diese Methode ist effizient, um Remote-Tags schnell zu überprüfen.

Anschließend hätten wir gelernt, wie man diese Remote-Tags lokal abruft und die Existenz eines bestimmten Tags überprüft, obwohl der vollständige Inhalt für diese Schritte nicht bereitgestellt wurde. Der Prozess würde darin bestehen, die Tags in das lokale Repository abzurufen und dann Git-Befehle zu verwenden, um zu prüfen, ob ein bestimmter Tag-Name unter den abgerufenen Tags vorhanden ist.