Von Gast (nicht überprüft) , 29 April 2026

Warum signieren

Ein signierter Commit bezeugt kryptographisch "dieser Commit wurde vom Inhaber dieses Schlussels verfasst, unverandert seit der Signatur".

Einmalige Einrichtung

gpg --full-generate-key
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey 0xABCDEF1234567890
git config --global commit.gpgsign true
git config --global tag.gpgsign true
gpg --armor --export 0xABCDEF1234567890

Auf Anforderung signieren

git commit -S -m "Important change"
git tag -s v1.0.0 -m "Release 1.0.0"
git log --show-signature
git verify-commit <sha>
git verify-tag v1.0.0

GPG-Agent und Pinentry

# ~/.gnupg/gpg-agent.conf
default-cache-ttl 28800
max-cache-ttl 86400
pinentry-program /usr/local/bin/pinentry-mac

Hardware-Schlussel

YubiKey oder ahnliche Token konnen den GPG-Signierschlussel halten und einen Touch pro Commit verlangen.

Haufige Fehler

commit.gpgsign true ohne funktionierenden Agent setzen lasst jeden git commit an einem hangenden Pinentry hangen.

Remote-Push verifizieren

git push --signed