Wie man prüft, ob ein Git-Commit signiert 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-Commit signiert ist. Das Signieren von Commits ist eine entscheidende Praxis, um die Authentizität und Integrität der Projektgeschichte zu überprüfen.

Durch praktische Schritte werden Sie entdecken, wie Sie den Befehl git log --show-signature verwenden können, um Signaturinformationen für Commits anzuzeigen, und den Befehl git verify-commit, um die Signatur eines bestimmten Commits zu prüfen. Sie werden auch lernen, wie Sie unsigned Commits testen und identifizieren können, und so ein umfassendes Verständnis dafür erlangen, wie Sie die Vertrauenswürdigkeit Ihres Git-Repositorys gewährleisten können.


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-560065{{"Wie man prüft, ob ein Git-Commit signiert ist"}} git/status -.-> lab-560065{{"Wie man prüft, ob ein Git-Commit signiert ist"}} git/commit -.-> lab-560065{{"Wie man prüft, ob ein Git-Commit signiert ist"}} git/log -.-> lab-560065{{"Wie man prüft, ob ein Git-Commit signiert ist"}} end

Führen Sie git log --show-signature aus

In diesem Schritt werden wir untersuchen, wie Sie Commit-Signaturen mit dem git log-Befehl anzeigen können. Das Signieren von Commits ist eine Möglichkeit, die Identität der Person zu verifizieren, die einen Commit vorgenommen hat, und fügt Ihrer Projektgeschichte eine zusätzliche Vertrauensebene hinzu.

Zunächst navigieren Sie in Ihr Projektverzeichnis, wenn Sie nicht bereits dort sind. Denken Sie daran, dass unser Projekt unter ~/project/my-time-machine liegt.

cd ~/project/my-time-machine

Lassen Sie uns nun das Commit-Log mit der Option --show-signature anzeigen. Diese Option teilt Git mit, die Signaturinformationen für jeden Commit anzuzeigen, falls vorhanden.

git log --show-signature

Sie sollten das Log Ihres vorherigen Commits sehen. Da wir das Commit-Signieren noch nicht konfiguriert haben, werden Sie keine Signaturinformationen angezeigt bekommen. Die Ausgabe sollte in etwa so aussehen:

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 --show-signature ist unerlässlich, um die Authentizität von Commits in einem Projekt zu überprüfen. Wenn Sie in einem Team arbeiten oder an Open-Source-Projekten mitwirken, helfen Commit-Signaturen sicherzustellen, dass die Commits, die Sie überprüfen oder verwenden, von vertrauenswürdigen Quellen stammen. Ohne Signaturen ist es schwieriger, die Herkunft von Änderungen sicherzustellen.

In den folgenden Schritten werden wir lernen, wie Sie Git so konfigurieren, dass es Ihre Commits signiert, und wie Sie diese Signaturen überprüfen können.

Verwenden Sie git verify-commit zur Prüfung

In diesem Schritt werden wir lernen, wie Sie den Befehl git verify-commit verwenden, um die Signatur eines bestimmten Commits zu prüfen. Dieser Befehl ist nützlich, wenn Sie die Authentizität eines einzelnen Commits überprüfen möchten, anstatt den Signaturstatus aller Commits im Log anzuzeigen.

Stellen Sie zunächst sicher, dass Sie sich in Ihrem Projektverzeichnis befinden:

cd ~/project/my-time-machine

Um git verify-commit zu verwenden, benötigen Sie den Commit-Hash (die eindeutige Kennung) des Commits, den Sie überprüfen möchten. Sie können diesen Hash aus der Ausgabe von git log erhalten. Bei unserem ersten Commit wird der Hash eine lange Zeichenfolge sein. Sie benötigen nur die ersten paar Zeichen (in der Regel reichen 7 aus), um den Commit zu identifizieren.

Lassen Sie uns den Commit-Hash mit git log --oneline abrufen:

git log --oneline

Dies zeigt eine vereinfachte Log-Ausgabe an, wie diese:

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

Der Teil a1b2c3d ist der kurze Commit-Hash. Kopieren Sie diesen Hash.

Verwenden Sie nun den Befehl git verify-commit gefolgt vom Commit-Hash. Ersetzen Sie YOUR_COMMIT_HASH durch den tatsächlichen Hash, den Sie kopiert haben:

git verify-commit YOUR_COMMIT_HASH

Da unser Commit nicht signiert war, werden Sie wahrscheinlich eine Ausgabe sehen, die darauf hinweist, dass keine Signatur vorhanden ist oder dass die Signatur nicht verifiziert werden konnte. Dies ist zu erwarten, da wir Git noch nicht so konfiguriert haben, dass es Commits signiert. Die Ausgabe könnte in etwa so aussehen:

object YOUR_COMMIT_HASH
type commit
tag -1
tree 8a9b0c1d2e3f4g5h6i7j8k9l0m1n2o3p4q5r6s7t
parent u1v2w3x4y5z6a7b8c9d0e1f2g3h4i5j6k7l8m9n0
author Jane Doe <[email protected]> 1678886400 +0000
committer Jane Doe <[email protected]> 1678886400 +0000

Send a message to the future

Der Befehl git verify-commit ist ein leistungsstarkes Werkzeug zur Untersuchung der Details eines Commits, einschließlich seines Signaturstatus. Es hilft Ihnen zu bestätigen, dass ein Commit nicht manipuliert wurde und dass er von einer vertrauenswürdigen Quelle stammt, was für die Aufrechterhaltung der Integrität der Projektgeschichte von entscheidender Bedeutung ist.

Im nächsten Schritt werden wir einen neuen Commit erstellen und sehen, wie Git unsigned Commits behandelt, wenn wir versuchen, sie zu überprüfen.

Testen von unsigned Commits

In diesem Schritt werden wir einen weiteren Commit ohne Signatur erstellen und beobachten, wie Git ihn behandelt, wenn wir die Prüfbefehle verwenden, die wir in den vorherigen Schritten gelernt haben. Dies wird Ihr Verständnis dafür verstärken, wie Git unsigned Commits erkennt.

Stellen Sie zunächst sicher, dass Sie sich in Ihrem Projektverzeichnis befinden:

cd ~/project/my-time-machine

Fügen wir eine weitere Zeile zu unserer message.txt-Datei hinzu:

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

Der >>-Operator hängt den Text an die bestehende Datei an. Lassen Sie uns nun den Status überprüfen:

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")

Lassen Sie uns nun die Änderungen stagieren und einen neuen Commit erstellen. Wir werden diesen Commit nicht signieren.

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

Sie werden eine Ausgabe sehen, die den neuen Commit bestätigt:

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

Nachdem wir nun einen zweiten, unsigned Commit haben, lassen Sie uns erneut git log --show-signature verwenden, um die Historie anzuzeigen:

git log --show-signature

Sie werden beide Commits im Log sehen. Keiner von ihnen wird Signaturinformationen anzeigen, da wir das Signieren noch nicht konfiguriert haben.

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

    Add a second message

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

    Send a message to the future

Schließlich verwenden wir git verify-commit für den neuen Commit. Holen Sie sich den kurzen Hash des neuesten Commits mit git log --oneline und ersetzen Sie YOUR_NEW_COMMIT_HASH unten:

git log --oneline
a1b2c3d (HEAD -> master) Add a second message
u1v2w3x Send a message to the future

Verifizieren Sie nun den neuen Commit:

git verify-commit YOUR_NEW_COMMIT_HASH

Wiederum wird die Ausgabe die Commit-Details anzeigen, aber keinen Signaturprüfstatus, was bestätigt, dass auch dieser Commit unsigned ist.

Dieser Schritt zeigt, dass Git-Commits standardmäßig nicht signiert sind. Um eine zusätzliche Sicherheitsebene und Vertrauenswürdigkeit hinzuzufügen, müssen Sie Git explizit so konfigurieren, dass es Ihre Commits signiert. Dies ist ein fortgeschrittenes Thema, das wir in diesem Einführungslab nicht behandeln werden. Das Verständnis, wie man unsigned Commits mit git log --show-signature und git verify-commit erkennt, ist jedoch der erste Schritt bei der Arbeit mit signierten Commits.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man prüft, ob Git-Commits signiert sind. Wir haben begonnen, indem wir den Befehl git log --show-signature verwendet haben, um den Signaturstatus aller Commits in der Projektgeschichte anzuzeigen. Dieser Befehl ist von entscheidender Bedeutung, um die Authentizität von Commits schnell zu beurteilen.

Als Nächstes haben wir uns mit dem Befehl git verify-commit beschäftigt, der es uns ermöglicht, die Signatur eines bestimmten Commits anhand seines Hashes zu überprüfen. Dies ist nützlich für gezielte Prüfungen. Schließlich haben wir unsigned Commits getestet, um zu verstehen, wie sie beim Prüfen auf Signaturen erscheinen. Diese Schritte vermitteln ein grundlegendes Verständnis davon, wie man die Authentizität von Commits in Git überprüft.