So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist

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) mit einer bestimmten Branch (Zweig) verknüpft ist. Wir werden den Befehl git branch --contains untersuchen, um zu ermitteln, welche Branches den Commit (Commit-Vorgang), auf den ein Tag zeigt, enthalten.

Sie werden auch git log verwenden, um visuell zu überprüfen, ob der getaggte Commit in der Historie einer Branch enthalten ist, und das Verhalten von git branch --contains mit Branches testen, die den getaggten Commit nicht enthalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/tag("Git Tags") subgraph Lab Skills git/add -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} git/commit -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} git/branch -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} git/checkout -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} git/log -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} git/tag -.-> lab-560110{{"So prüfen Sie, ob ein Git-Tag mit einer Branch verknüpft ist"}} end

Ausführen von git branch --contains mit einem Tag

In diesem Schritt werden wir untersuchen, wie man den Befehl git branch --contains mit einem Tag (Git-Markierung) verwendet. Dieser Befehl ist nützlich, um herauszufinden, welche Branches (Zweige) einen bestimmten Commit (Commit-Vorgang) enthalten. Da Tags auf bestimmte Commits verweisen, können wir ihn nutzen, um zu sehen, welche Branches den Commit enthalten, auf den ein Tag zeigt.

Zunächst stellen wir sicher, dass wir uns in unserem Projektverzeichnis befinden. Öffnen Sie Ihr Terminal und navigieren Sie in das my-time-machine-Verzeichnis, falls Sie sich nicht bereits dort befinden:

cd ~/project/my-time-machine

Jetzt erstellen wir eine neue Datei und machen einen Commit. Dies gibt uns einen neuen Commit, den wir taggen können.

echo "Another message for the future" > message2.txt
git add message2.txt
git commit -m "Add another message"

Nach dem Commit sollten Sie eine Ausgabe ähnlich dieser sehen:

[master a1b2c3d] Add another message
 1 file changed, 1 insertion(+)
 create mode 100644 message2.txt

Jetzt erstellen wir ein Tag für diesen Commit. Wir nennen es v1.0.

git tag v1.0

Dieser Befehl erstellt ein einfaches (lightweight) Tag namens v1.0, das auf den aktuellen Commit zeigt.

Um zu sehen, welche Branches den Commit enthalten, auf den das v1.0-Tag zeigt, verwenden wir git branch --contains:

git branch --contains v1.0

Da wir nur die master-Branch haben und wir das Tag am neuesten Commit der master-Branch erstellt haben, sollte die Ausgabe master anzeigen:

* master

Das Sternchen (*) gibt die aktuell ausgecheckte Branch an.

Dieser Befehl ist mächtig, da er es Ihnen ermöglicht, schnell zu identifizieren, welche Branches einen bestimmten Meilenstein oder Release, repräsentiert durch ein Tag, integriert haben.

Verwenden von git log zur Überprüfung der Branch

In diesem Schritt verwenden wir den Befehl git log, um visuell zu überprüfen, dass der Commit, auf den unser Tag v1.0 zeigt, tatsächlich in der Historie der master-Branch enthalten ist. Während git branch --contains uns sagt, welche Branches (Zweige) einen Commit enthalten, ermöglicht es uns git log, die Commit-Historie im Detail zu sehen.

Stellen Sie sicher, dass Sie sich immer noch im Verzeichnis ~/project/my-time-machine befinden.

Jetzt lassen wir uns die Commit-Historie der master-Branch mit git log anzeigen. Wir können die Option --decorate verwenden, um Tags (Git-Markierungen) und Branch-Zeiger anzuzeigen.

git log --decorate --oneline

Die Option --oneline bietet eine kompakte Ansicht, bei der jeder Commit in einer einzigen Zeile angezeigt wird. Die Option --decorate zeigt die Referenzen (wie Branch-Namen und Tags) an, die auf jeden Commit verweisen.

Sie sollten eine Ausgabe ähnlich dieser sehen:

a1b2c3d (HEAD -> master, tag: v1.0) Add another message
e4f5g6h Send a message to the future

In dieser Ausgabe können Sie den Commit-Hash (in diesem Beispiel a1b2c3d) sehen, gefolgt von der Commit-Nachricht. Wichtig ist, dass Sie neben dem neuesten Commit (HEAD -> master, tag: v1.0) sehen sollten. Dies bestätigt, dass der neueste Commit der master-Branch derselbe Commit ist, auf den das v1.0-Tag zeigt.

Diese visuelle Bestätigung mit git log ergänzt die Informationen, die git branch --contains liefert. Sie hilft Ihnen, die Beziehung zwischen Branches, Tags und Commits in der Historie Ihres Projekts zu verstehen.

Denken Sie daran, dass git log ein leistungsstarkes Werkzeug zum Erkunden der Zeitlinie Ihres Projekts ist. Sie können verschiedene Optionen verwenden, um die Ausgabe anzupassen und die Informationen zu finden, die Sie benötigen. Drücken Sie q, um die Log-Ansicht zu verlassen, wenn sie in einem Pager angezeigt wird.

Testen von nicht verwandten Branches

In diesem Schritt werden wir eine neue Branch (Zweig) erstellen und einen Commit auf ihr durchführen, der nicht auf dem Commit basiert, auf den unser v1.0-Tag zeigt. Dies hilft uns zu verstehen, wie git branch --contains mit Branches verhält, die den angegebenen Commit nicht enthalten.

Zunächst erstellen wir eine neue Branch namens feature-branch.

git branch feature-branch

Jetzt wechseln wir zu dieser neuen Branch.

git checkout feature-branch

Sie sollten eine Ausgabe sehen, die anzeigt, dass Sie die Branch gewechselt haben:

Switched to branch 'feature-branch'

Als Nächstes machen wir einen neuen Commit auf dieser feature-branch. Wir erstellen eine neue Datei.

echo "This is a new feature" > feature.txt
git add feature.txt
git commit -m "Add new feature file"

Nach dem Commit sollten Sie eine Ausgabe ähnlich dieser sehen:

[feature-branch a1b2c3d] Add new feature file
 1 file changed, 1 insertion(+)
 create mode 100644 feature.txt

Jetzt verwenden wir erneut git branch --contains v1.0. Denken Sie daran, dass v1.0 auf einen Commit auf der master-Branch zeigt, und unser neuer Commit auf der feature-branch unterschiedlich ist.

git branch --contains v1.0

Diesmal sollte die Ausgabe nur die master-Branch anzeigen:

master

Die feature-branch wird nicht aufgelistet, da sie den spezifischen Commit nicht enthält, auf den das v1.0-Tag zeigt. Dies zeigt, wie git branch --contains genau erkennt, welche Branches einen bestimmten Commit in ihrer Historie haben.

Dies ist nützlich, wenn Sie wissen möchten, ob ein Bugfix (mit einer Version getaggt) in einer Release-Branch enthalten ist oder ob ein bestimmtes Feature (ebenfalls möglicherweise getaggt) in verschiedene Entwicklungszweige gemerged wurde.

Zusammenfassung

In diesem Lab (Labor) haben wir gelernt, wie man prüft, ob ein Git-Tag (Git-Markierung) mit einer Branch (Zweig) verknüpft ist. Wir haben begonnen, indem wir den Befehl git branch --contains <tag> verwendet haben, der effektiv Branches identifiziert, die den Commit enthalten, auf den das angegebene Tag zeigt. Wir haben dies demonstriert, indem wir einen neuen Commit erstellt, ihn getaggt und dann überprüft haben, dass die master-Branch, in der das Tag erstellt wurde, von dem Befehl aufgelistet wurde.

Anschließend haben wir den Befehl git log verwendet, um visuell zu bestätigen, dass der mit dem Tag verknüpfte Commit in der Historie der Branch vorhanden ist, was eine detaillierte Ansicht der Commit-Abstammung bietet. Schließlich haben wir untersucht, wie sich der Befehl git branch --contains mit Branches verhält, die den getaggten Commit nicht enthalten, was seine Nützlichkeit bei der schnellen Bestimmung der Einbeziehung von bestimmten getaggten Meilensteinen in Branches unterstreicht.