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 signieren kann, wird möglicherweise ein Fehler wie der folgende angezeigt.
$ git commit -m 'Initial commit'
error: gpg failed to sign the data
fatal: failed to write commit object
Dieser Fehler kann in den folgenden Fällen auftreten:
- Du hast die GPG-Überprüfung deaktiviert und versuchst, einen regulären, nicht signierten Commit in einem vorhandenen Codespace durchzuführen.
- Du hast die GPG-Überprüfung aktiviert, aber die Git-Konfiguration überschrieben, die erforderlich ist, damit GitHub Codespaces deine Commits signieren kann, etwa indem du GitHub Codespaces mit einem Dotfiles-Repository verknüpft hast, das Git-Konfigurationsdateien enthält.
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
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.
Fehler, die durch in Konflikt stehende Konfiguration verursacht werden
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
Weiterführende Themen
- Informationen zur Verifizierung einer Commitsignatur
git config
in der offiziellen Git-Dokumentation