Zum Inhalt springen

Git Signierte Commits (Optional)

Signierte Git-Commits sind Commits mit digitaler Signatur, die zeigen, von wem sie wirklich stammen.


Um signierte Git-Commits nutzen zu können, kann in der jeweiligen Git-Konfiguration (z.B. ~/.gitconfig.d/kunde-1) folgende Einstellungen vorgenommen werden:

[user]
name = Dein Name
email = dev-kunde-1@example.com
signingkey = ~/.ssh/github_ed25519.pub
[gpg]
format = ssh
[commit]
gpgsign = true

Git unterstützt SSH-Signaturen über gpg.format=ssh so dass user.signingkey dabei auf den SSH-Public-Key zeigt. An der SSH Konfiguration muss für signierte Commits nicht geändert werden.


In GitHub wird dafür am GitHub Account folgendes benötigt:

  • Neuen SSH Key anlegen
  • Als Key type “Signing Key” auswählen
  • Public Key einfügen

Bei Verwendung mehrerer Git-Konfigurationen (z.B. über includeIf für verschiedene Projektordner) kann Signing gezielt nur für bestimmte Kontexte aktiviert werden:

Beispiel: Nur Projekte von kunde-1 signieren.

~/.gitconfig

Terminal-Fenster
[includeIf "gitdir:~/Work/kunde-1/"]
path = ~/.gitconfig.d/kunde-1
[includeIf "gitdir:~/Work/kunde-2/"]
path = ~/.gitconfig.d/kunde-2

~/.gitconfig.d/kunde-1 (mit Signing)

[user]
name = Dein Name
email = dev-kunde-1@example.com
signingkey = ~/.ssh/github_ed25519.pub
[gpg]
format = ssh
[commit]
gpgsign = true

~/.gitconfig.d/kunde-2 (ohne Signing)

[user]
name = Dein Name
email = dev-kunde-2@example.com

So werden nur Commits in ~/Work/kunde-1/ automatisch signiert, während Commits in Kundenprojekten unsigniert bleiben.


Nach einem signierten Commit zeigt GitHub ein grünes “Verified”-Badge neben dem Commit an.

Die Signatur kann mit folgendem Befehl geprüft werden:

Terminal-Fenster
git log --show-signature -1