Wenn du die GPG-Überprüfung aktivierst, signiert GitHub Codespaces automatisch deine Commits in Codespaces, die du aus ausgewählten Repositorys erstellst. Weitere Informationen findest du unter Verwalten der GPG-Überprüfung für GitHub Codespaces.
Nachdem du die GPG-Überprüfung aktiviert hast, wird sie automatisch in allen neuen Codespaces wirksam, die du aus den relevanten Repositorys erstellst. Damit die GPG-Überprüfung in einem vorhandenen aktiven Codespace wirksam wird, musst du den Codespace beenden und neu starten. Weitere Informationen findest du unter Beenden und Starten eines Codespaces.
Wenn GitHub Codespaces einen Commit nicht signiert, wird die Fehlermeldung gpg failed to sign the data
möglicherweise in der Befehlszeile oder in einem Visual Studio Code-Popupfenster angezeigt.
Die folgenden Abschnitte dieses Artikels enthalten Hinweise zur Problembehandlung für häufige Ursachen dieses Fehlers.
- Wenn die GPG-Überprüfung zuvor in deinen Einstellungen für GitHub Codespaces aktiviert wurde, und du die GPG-Überprüfung kürzlich deaktiviert oder ein Repository aus der Liste der vertrauenswürdigen Repositorys entfernt haben, versucht Git möglicherweise weiterhin, deine Commits zu signieren. Weitere Informationen findest du unter Fehler nach dem Deaktivieren der GPG-Überprüfung.
- Wenn die GPG-Überprüfung für den Codespace aktiviert ist, hast du möglicherweise die Git-Konfiguration überschrieben, die zum Signieren deiner Commits erforderlich ist. Weitere Informationen findest du unter Fehler durch in Konflikt stehende Git-Konfiguration.
- Wenn die GPG-Überprüfung für den Codespace deaktiviert ist, und der Fehler beim Versuch auftritt, von der Ansicht „Quellcodeverwaltung“ in VS Code aus zu committen, kann dies auf deine VS Code-Einstellungen zurückzuführen sein. Weitere Informationen findest du unter Fehler in der VS Code-Ansicht „Quellcodeverwaltung“.
Fehler nach dem Deaktivieren der GPG-Überprüfung
Wenn du die GPG-Überprüfung aktivierst, signiert GitHub Codespaces standardmäßig alle Commits, die du in Codespaces vornimmst. Hierzu wird der Git-Konfigurationswert commit.gpgsign
auf true
festgelegt.
Wenn du die GPG-Überprüfung deaktiviert hast und in einem vorhandenen Codespace arbeitest, wird dieser Wert dennoch auf true
festgelegt. Das bedeutet, dass GitHub Codespaces versucht, deine Commits zu signieren. Dieser Vorgang ist jedoch nicht erfolgreich, weil du die Einstellung für die GPG-Überprüfung deaktiviert hast.
Um weiterhin reguläre, nicht signierte Commits in deinem Codespace durchzuführen, setze commit.gpgsign
auf den Standardwert false
zurück, indem du folgenden Befehl im Terminal eingibst:
git config --unset commit.gpgsign
git config --unset commit.gpgsign
Um zu überprüfen, ob der Wert ordnungsgemäß aus deiner Konfiguration entfernt wurde, kannst du git config --list
eingeben. In der Liste sollte kein Wert für commit.gpgsign
angezeigt werden.
Durch in Konflikt stehende Git-Konfiguration verursachte Fehler
Um deine Commits automatisch zu signieren, legt GitHub Codespaces bestimmte Git-Konfigurationswerte in deinem Codespace fest. Wenn du die von GitHub Codespaces festgelegten Werte überschreibst, kannst du deine Commits möglicherweise nicht signieren.
Möglicherweise überschreibst du diese Werte versehentlich, wenn du GitHub Codespaces mit einem Dotfiles-Repository verknüpft hast, das Git-Konfigurationsdateien enthält. Weitere Informationen zur Verwendung von Dotfiles mit GitHub Codespaces findest du unter Personalisieren von GitHub Codespaces für dein Konto.
Überprüfen auf in Konflikt stehende Konfigurationen
Um deine Commits mit GPG zu signieren, legt GitHub Codespaces automatisch die folgenden Git-Konfigurationswerte auf Systemebene fest:
Konfigurationseinstellung | Erforderlicher Wert |
---|---|
user.name | Muss mit dem vollständigen Namen übereinstimmen, der für dein GitHub-Profil festgelegt ist. |
credential.helper | Muss auf /.codespaces/bin/gitcredential_github.sh festgelegt werden. |
gpg.program | Muss auf /.codespaces/bin/gh-gpgsign festgelegt werden. |
Um zu überprüfen, ob diese Werte in einem Codespace ordnungsgemäß festgelegt sind, kannst du den Befehl git config --list --show-origin
verwenden. Da GitHub Codespaces diese Konfiguration auf Systemebene festlegt, sollten die erforderlichen Konfigurationseinstellungen aus /usr/local/etc/gitconfig
stammen.
$ git config --list --show-origin
file:/usr/local/etc/gitconfig credential.helper=/.codespaces/bin/gitcredential_github.sh
file:/usr/local/etc/gitconfig user.name=Mona Lisa
file:/usr/local/etc/gitconfig gpg.program=/.codespaces/bin/gh-gpgsign
Zusätzlich zu den oben aufgeführten Werten können Fehler auftreten, wenn die in deinen Codespaces verwendeten Dotfiles einen der folgenden Werte enthalten:
- Git-Konfigurationswert
user.signingkey
- Git-Konfigurationswert
commit.gpgsign
- Manuell festgelegter
GITHUB_TOKEN
-Wert
Entfernen von in Konflikt stehenden Konfigurationen
Wenn du die automatische GPG-Überprüfung für GitHub Codespaces aktiviert lassen möchtest, musst du alle in Konflikt stehenden Konfigurationen aus den in deinen Codespaces verwendeten Dotfiles entfernen.
Wenn die globale Datei .gitconfig
auf deinem lokalen Computer beispielsweise einen gpg.program
-Wert enthält und du diese Datei an ein Dotfiles-Repository gepusht hast, das mit GitHub Codespaces verknüpft ist, solltest du gpg.program
aus dieser Datei entfernen und den Wert stattdessen auf Systemebene auf deinem lokalen Computer festlegen.
Hinweis: An deinem Dotfiles-Repository vorgenommene Änderungen gelten für von dir erstellte neue Codespaces, aber nicht für vorhandene Codespaces.
-
Öffne auf deinem lokalen Computer ein Terminal.
-
Verwende den Befehl
git config --global --unset
, um den in Konflikt stehenden Wert aus~/.gitconfig
(Mac/Linux) oderC:\Users\YOUR-USER\.gitconfig
(Windows) zu entfernen.git config --global --unset gpg.program
-
Pushe die Änderung in dein Dotfiles-Repository auf GitHub.
-
Um deine lokale Konfiguration beizubehalten, lege optional den Wert erneut in einer Git-Konfigurationsdatei fest, die du nicht an dein Dotfiles-Repository pusht.
Beispielsweise kannst du das Flag
--system
verwenden, um die Konfiguration in der Datei auf Systemebene aufPATH/etc/gitconfig
festzulegen.PATH
ist dabei das Verzeichnis, in dem Git auf deinem System installiert ist.git config --system gpg.program gpg2
Wenn dein Dotfiles-Repository ein Installationsskript in einer erkannten Datei wie install.sh
enthält, kannst du die Umgebungsvariable $CODESPACES
verwenden, um bedingte Logik (etwa gpg.program
nur dann festlegen, wenn du dich nicht in einem Codespace befindest) hinzuzufügen. Im folgenden Beispiel wird true
von -z "$CODESPACES"
zurückgegeben, wenn du dich nicht in einem Codespace befindest.
if [ -z "$CODESPACES" ]; then git config --global gpg.program gpg2 fi
if [ -z "$CODESPACES" ]; then
git config --global gpg.program gpg2
fi
Fehler in der VS Code-Ansicht „Quellcodeverwaltung“
Wenn die GPG-Überprüfung in deinen Einstellungen für GitHub Codespaces deaktiviert ist, oder das Repository, von dem aus du den Codespace erstellt hast, nicht in der Liste der vertrauenswürdigen Repositorys enthalten ist, sollte Git nicht versuchen, deine Commits zu signieren. Wenn beim Versuch, einen Commit von der Ansicht „Quellcodeverwaltung“ in VS Code aus auszuführen, ein Signierfehler auftritt, solltest du die VS Code-Einstellungen in deinem Codespace überprüfen.
-
Wähle in der unteren linken Ecke des Fensters aus, und klicke dann auf Einstellungen.
-
Suche auf der Registerkarte „Benutzer“ in der Suchleiste nach „gpg“.
-
Stelle sicher, dass die Einstellung „Aktiviert die Commitsignierung mit GPG oder X.509“ deaktiviert ist.
Wenn du feststellst, dass diese Einstellung aktiviert ist, deaktiviere entweder das Kontrollkästchen, damit VS Code nicht mehr versucht, deine Commits zu signieren, oder aktiviere die GPG-Überprüfung für das Repository, in dem du arbeitest, damit deine Commits erfolgreich signiert werden können.
Wenn Du deine VS Code-Einstellungen änderst, musst du sicherstellen, dass „Einstellungssynchronisierung“ aktiviert ist, wenn du deine Änderungen für andere von dir erstellte Codespaces freigeben möchtest. Du solltest die Einstellungssynchronisierung nur in Codespaces aktivieren, die von einem vertrauenswürdigen Repository aus erstellt wurden. Weitere Informationen findest du unter Personalisieren von GitHub Codespaces für dein Konto.
Weiterführende Themen
- Informationen zur Verifizierung einer Commit-Signatur
git config
in der offiziellen Git-Dokumentation