Wie man prüft, ob ein Git-Commit der neueste 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 bestimmter Git-Commit der neueste Commit in Ihrem Repository ist. Wir werden untersuchen, wie Sie den Befehl git log -1 verwenden können, um den neuesten Commit anzuzeigen, auf den HEAD zeigt, und dann git rev-parse HEAD nutzen, um die eindeutige Kennung dieses Commits abzurufen. Abschließend werden Sie diese Befehle mit älteren Commits testen, um Ihr Verständnis dafür zu festigen, wie HEAD die aktuelle Position in der Projektgeschichte darstellt.


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/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560066{{"Wie man prüft, ob ein Git-Commit der neueste ist"}} git/status -.-> lab-560066{{"Wie man prüft, ob ein Git-Commit der neueste ist"}} git/commit -.-> lab-560066{{"Wie man prüft, ob ein Git-Commit der neueste ist"}} git/log -.-> lab-560066{{"Wie man prüft, ob ein Git-Commit der neueste ist"}} end

Führen Sie git log -1 aus, um HEAD zu prüfen

In diesem Schritt lernen wir, wie wir den neuesten Commit in unserem Git-Repository schnell mithilfe des Befehls git log -1 prüfen können. Dies ist eine praktische Methode, um den aktuellen Zustand der Projektgeschichte zu sehen, ohne das gesamte Protokoll anzuzeigen.

Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine befinden. Wenn nicht, verwenden Sie den cd-Befehl, um dorthin zu navigieren:

cd ~/project/my-time-machine

Jetzt führen wir den Befehl aus, um den neuesten Commit anzuzeigen:

git log -1

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Der Befehl git log -1 zeigt Ihnen die Details des allerletzten Commits, der in der aktuellen Branch vorgenommen wurde. Die Option -1 teilt Git mit, nur den neuesten Commit anzuzeigen.

Beachten Sie den Teil (HEAD -> master). HEAD ist ein Zeiger, der immer auf den neuesten Commit in der aktuellen Branch zeigt. In diesem Fall zeigt er auf den neuesten Commit auf der master-Branch. Stellen Sie sich HEAD als Ihre aktuelle Position in der Projektzeitlinie vor. Wenn Sie einen neuen Commit erstellen, bewegt sich HEAD automatisch weiter und zeigt auf diesen neuen Commit.

Das Verständnis von HEAD ist von entscheidender Bedeutung, da viele Git-Befehle auf den Commit angewendet werden, auf den HEAD zeigt. In den nächsten Schritten werden wir untersuchen, wie HEAD mit bestimmten Commit-Identifikatoren zusammenhängt.

Vergleich eines Commits mit git rev-parse HEAD

Im vorherigen Schritt haben wir gesehen, dass git log -1 den Commit anzeigt, auf den HEAD zeigt. Jetzt verwenden wir den Befehl git rev-parse HEAD, um nur die eindeutige Kennung (der SHA-1-Hash) des Commits zu erhalten, auf den HEAD derzeit zeigt.

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

Führen Sie den folgenden Befehl aus:

git rev-parse HEAD

Sie sollten eine lange Zeichenfolge aus Buchstaben und Zahlen sehen, die der vollständige SHA-1-Hash Ihres neuesten Commits ist:

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9

Vergleichen Sie diese Ausgabe mit dem Commit-Hash, den Sie in der Ausgabe von git log -1 im vorherigen Schritt gesehen haben. Sie sollten identisch sein!

Der Befehl git rev-parse ist ein niedrigschichtiger Git-Befehl, der oft verwendet wird, um verschiedene Arten von Git-Referenzen (wie Branch-Namen, Tags oder HEAD) in ihre entsprechenden SHA-1-Hashes umzuwandeln. Es ist ein leistungsstarkes Werkzeug für die Skripting und Automatisierung in Git.

Indem Sie git rev-parse HEAD verwenden, fragen Sie Git im Wesentlichen: "Was ist die genaue Commit-ID, die meine aktuelle Position (HEAD) repräsentiert?" Dies gibt Ihnen die Roh-ID des Snapshot, mit dem Sie derzeit arbeiten.

Das Verständnis, wie man den Roh-Commit-Hash erhält, ist wichtig, da diese Hashes die grundlegende Methode sind, wie Git bestimmte Versionen Ihres Projekts verfolgt. Sie können diese Hashes verwenden, um auf jeden Punkt in der Projektgeschichte zu verweisen.

Testen mit älteren Commits

In den vorherigen Schritten haben wir über HEAD und wie man dessen Commit-Hash erhält gelernt. Jetzt schauen wir uns an, wie Git auf ältere Commits verweist.

Derzeit haben wir nur einen Commit in unserem Repository. Um zu zeigen, wie man auf ältere Commits verweist, müssen wir einen weiteren Commit erstellen.

Zunächst fügen wir eine weitere Zeile zur Datei message.txt hinzu. Verwenden Sie den echo-Befehl mit >>, um Text an die Datei anzuhängen:

echo "This is a second message." >> message.txt

Jetzt überprüfen wir den Status:

git status

Sie sollten sehen, dass message.txt geändert wurde:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   message.txt

no changes added to commit (use "git add and/or git commit -a)

Jetzt stellen wir die Änderungen in den Staging-Bereich und erstellen einen neuen Commit:

git add message.txt
git commit -m "Add a second message"

Sie sollten eine Ausgabe sehen, die darauf hinweist, dass ein neuer Commit erstellt wurde:

[master a1b2c3d] Add a second message
 1 file changed, 1 insertion(+)

Jetzt haben wir zwei Commits. Schauen wir uns das Protokoll erneut an:

git log --oneline

Die Option --oneline gibt eine kompakte Ansicht des Protokolls. Sie sollten etwas wie Folgendes sehen (die Hashes werden unterschiedlich sein):

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

Der oberste Commit ist der neueste, und es ist dort, wo HEAD zeigt. Der darunter liegende Commit ist der ältere.

Git bietet Möglichkeiten, auf Commits relativ zu HEAD zu verweisen. Der Commit direkt vor HEAD kann als HEAD~1 oder HEAD^ bezeichnet werden. Versuchen wir, den Hash des vorherigen Commits mit git rev-parse zu erhalten:

git rev-parse HEAD~1

Sie sollten den Hash des ersten Commits sehen, den Sie gemacht haben:

e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3

Dieser Hash sollte mit dem Hash des "Send a message to the future"-Commits in Ihrer git log --oneline-Ausgabe übereinstimmen.

Sie können HEAD~2, HEAD~3 usw. verwenden, um auf Commits weiter zurück in der Geschichte zu verweisen. Diese relative Referenzierung ist sehr nützlich, um sich in der Projektgeschichte zu bewegen und Operationen an bestimmten vergangenen Versionen auszuführen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob ein Git-Commit der neueste ist, indem wir die Rolle von HEAD verstanden haben. Wir haben den Befehl git log -1 verwendet, um die Details des neuesten Commits anzuzeigen und beobachtet, dass HEAD auf diesen Commit zeigt. Anschließend haben wir git rev-parse HEAD genutzt, um den eindeutigen SHA-1-Hash des Commits abzurufen, auf den HEAD derzeit zeigt, der den neuesten Commit in der aktuellen Branch darstellt.