So prüfen Sie, ob ein Git-Repository einen bestimmten Commit-Hash enthält

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-Repository einen bestimmten Commit-Hash enthält. Wir werden uns mit dem Befehl git rev-parse befassen, um den vollständigen Hash aus einem kurzen Hash oder anderen Git-Referenzen zu erhalten. Dies bietet eine eindeutige Möglichkeit, Commits zu identifizieren.

Anschließend verwenden Sie den Befehl git show, um die Existenz eines Commits anhand seines Hashes zu überprüfen und die Details anzuzeigen. Abschließend werden wir behandeln, wie Sie Szenarien mit ungültigen oder nicht vorhandenen Commit-Hashes behandeln können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/status -.-> lab-560082{{"So prüfen Sie, ob ein Git-Repository einen bestimmten Commit-Hash enthält"}} git/diff -.-> lab-560082{{"So prüfen Sie, ob ein Git-Repository einen bestimmten Commit-Hash enthält"}} git/log -.-> lab-560082{{"So prüfen Sie, ob ein Git-Repository einen bestimmten Commit-Hash enthält"}} end

Ausführen von git rev-parse für einen Commit

In diesem Schritt lernen wir, wie wir den Befehl git rev-parse verwenden, um den vollständigen Hash eines Commits zu erhalten. Dies ist nützlich, wenn Sie den genauen Bezeichner für einen bestimmten Punkt in der Projektgeschichte benötigen.

Zunächst stellen wir sicher, dass wir uns im Projektverzeichnis befinden. Öffnen Sie Ihr Terminal und navigieren Sie zum Verzeichnis my-time-machine:

cd ~/project/my-time-machine

Jetzt holen wir uns den kurzen Hash unseres neuesten Commits mit git log --oneline. Dieser Befehl zeigt eine komprimierte Ansicht Ihrer Commit-Historie an.

git log --oneline

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

a1b2c3d (HEAD -> master) Send a message to the future

Der Teil a1b2c3d ist der kurze Hash Ihres Commits. Obwohl dies für den täglichen Gebrauch oft ausreicht, benötigen Sie manchmal den vollständigen, eindeutigen Bezeichner.

Hier kommt git rev-parse ins Spiel. Wir können es verwenden, um den vollständigen Hash aus dem kurzen Hash zu erhalten. Ersetzen Sie a1b2c3d durch den kurzen Hash, den Sie in der Ausgabe von git log --oneline gesehen haben:

git rev-parse a1b2c3d

Sie sollten den vollständigen Hash im Terminal sehen, etwa so:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t

Der Befehl git rev-parse ist ein Low-Level-Befehl, der oft in Skripten verwendet wird. Er kann verschiedene Arten von Git-Referenzen (wie Branch-Namen, Tags oder kurze Hashes) parsen und die entsprechende Objekt-ID (den vollständigen Hash) ausgeben.

Das Verständnis, wie man den vollständigen Hash erhält, ist wichtig, da es eine eindeutige Möglichkeit bietet, auf einen bestimmten Commit zu verweisen, unabhängig davon, ob Branches oder Tags verschoben werden.

Verwenden von git show zur Überprüfung des Hashes

Im vorherigen Schritt haben wir gelernt, wie man den vollständigen Hash eines Commits mit git rev-parse erhält. Jetzt verwenden wir den Befehl git show, um die Details dieses bestimmten Commits anhand seines Hashes anzuzeigen.

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

Der Befehl git show wird verwendet, um Informationen zu verschiedenen Arten von Git-Objekten, einschließlich Commits, anzuzeigen. Wenn Sie git show einen Commit-Hash übergeben, zeigt es die Commit-Nachricht, den Autor, das Datum und die Änderungen an, die mit diesem Commit vorgenommen wurden.

Lassen Sie uns den vollständigen Hash, den wir im vorherigen Schritt erhalten haben, mit git show verwenden. Ersetzen Sie a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t durch den tatsächlichen vollständigen Hash Ihres Commits:

git show a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die die Details Ihres ersten Commits zeigt:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

diff --git a/message.txt b/message.txt
new file mode 100644
index 0000000..a1b2c3d
--- /dev/null
+++ b/message.txt
@@ -0,0 +1 @@
+Hello, Future Me

Diese Ausgabe bestätigt, dass der von Ihnen verwendete Hash dem Commit entspricht, in dem wir die Datei message.txt mit dem Inhalt "Hello, Future Me" hinzugefügt haben.

Das Verwenden von git show mit einem Commit-Hash ist eine leistungsstarke Methode, um die Historie Ihres Projekts zu untersuchen. Sie können es nutzen, um genau zu sehen, welche Änderungen in einem beliebigen Commit vorgenommen wurden. Dies ist unschätzbar für das Debugging oder das Verständnis, wie ein Projekt sich entwickelt hat.

Denken Sie daran, dass Sie entweder den vollständigen Hash oder ein ausreichend langes Präfix des Hashes (normalerweise reichen 7 Zeichen aus, aber der vollständige Hash ist immer eindeutig) mit git show verwenden können.

Umgang mit ungültigen Hashes

In den vorherigen Schritten haben wir erfolgreich einen gültigen Commit-Hash mit git rev-parse und git show verwendet. Aber was passiert, wenn Sie einen ungültigen oder nicht existierenden Hash angeben? Git ist so konzipiert, dass es Ihnen Feedback gibt, wenn es das Objekt, nach dem Sie suchen, nicht finden kann.

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

Versuchen wir, git show mit einem Hash zu verwenden, der nicht existiert. Wir geben einfach eine zufällige Zeichenfolge ein, die wie ein Hash aussieht:

git show deadbeef

Sie sollten eine Fehlermeldung ähnlich der folgenden sehen:

fatal: bad object deadbeef

Diese Meldung sagt Ihnen, dass Git kein Objekt (in diesem Fall einen Commit) mit dem Hash deadbeef finden konnte. Dies ist Gits Möglichkeit, Ihnen mitzuteilen, dass die von Ihnen angegebene Referenz in diesem Repository nicht gültig ist.

In ähnlicher Weise erhalten Sie einen Fehler, wenn Sie versuchen, git rev-parse mit einem ungültigen Hash zu verwenden:

git rev-parse invalidhash

Die Ausgabe wird ähnlich sein:

fatal: ambiguous argument 'invalidhash': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Diese Fehlermeldung ist etwas detaillierter und deutet darauf hin, dass Git invalidhash nicht als bekannte Revision oder Dateipfad interpretieren konnte.

Das Verständnis dieser Fehlermeldungen ist wichtig. Wenn Sie auf einen "bad object" oder "unknown revision" -Fehler stoßen, bedeutet dies normalerweise, dass der Commit-Hash, der Branch-Name oder das Tag, das Sie verwenden möchten, in der Historie Ihres aktuellen Repositorys nicht existiert. Überprüfen Sie den von Ihnen verwendeten Hash oder die Referenz noch einmal, um sicherzustellen, dass er/sie korrekt ist.

Dieser Schritt zeigt, dass Git streng ist, wenn es um die von Ihnen angegebenen Referenzen geht. Die Verwendung gültiger Hashes ist entscheidend, um die Historie Ihres Projekts genau zu durchsuchen und zu manipulieren.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob ein Git-Repository einen bestimmten Commit-Hash enthält. Wir haben begonnen, den Befehl git rev-parse zu verwenden, um den vollständigen Hash eines Commits anhand seines kurzen Hashes zu erhalten, und dabei verstanden, welche Rolle er bei der Analyse von Git-Referenzen und der Bereitstellung eindeutiger Objekt-IDs spielt.

Als Nächstes haben wir den Befehl git show untersucht, um die Existenz eines Commits anhand seines Hashes zu überprüfen und die Details anzuzeigen. Dieser Prozess ermöglicht es uns, zu bestätigen, dass ein bestimmter Commit in der Historie des Repositorys vorhanden ist.