Skip to main content

Problembehandlung für die GPG-Überprüfung für GitHub Codespaces

Dieser Artikel enthält Tipps zur Problembehandlung bei Fehlern im Zusammenhang mit dem Signieren deiner Commits in Codespaces.

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:

Shell
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:

KonfigurationseinstellungErforderlicher Wert
user.nameMuss mit dem vollständigen Namen übereinstimmen, der für dein GitHub-Profil festgelegt ist.
credential.helperMuss auf /.codespaces/bin/gitcredential_github.sh festgelegt werden.
gpg.programMuss 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.

  1. Öffne auf deinem lokalen Computer ein Terminal.

  2. Verwende den Befehl git config --global --unset, um den in Konflikt stehenden Wert aus ~/.gitconfig (Mac/Linux) oder C:\Users\YOUR-USER\.gitconfig (Windows) zu entfernen.

    git config --global --unset gpg.program
    
  3. Pushe die Änderung in dein Dotfiles-Repository auf GitHub.

  4. 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 auf PATH/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.

Shell
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.

  1. Wähle in der unteren linken Ecke des Fensters aus, und klicke dann auf Einstellungen.

    Screenshot eines Abschnitts des VS Code-Webclients. Ein Zahnradsymbol und die Option „Einstellungen“ in einem Menü sind beide mit einer orangefarbenen Kontur hervorgehoben.

  2. Suche auf der Registerkarte „Benutzer“ in der Suchleiste nach „gpg“.

  3. Stelle sicher, dass die Einstellung „Aktiviert die Commitsignierung mit GPG oder X.509“ deaktiviert ist.

    Screenshot der Einstellungenregisterkarte „Benutzer". Ein deaktiviertes Kontrollkästchen mit der Bezeichnung „Aktiviert die Commitsignierung mit GPG oder X.509“ ist mit einer orangefarbenen Kontur hervorgehoben.

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