GPG 検証を有効にすると、GitHub Codespaces は、選んだリポジトリから作成した codespace でコミットに自動的に署名します。 詳しくは、「GitHub Codespaces の GPG 検証を管理する」を参照してください。
GPG 検証を有効にすると、関連するリポジトリから作成した新しい codespace で自動的に有効になります。 既存のアクティブな codespace で GPG 検証を有効にするには、codespace を停止して再起動する必要があります。 詳しくは、「codespace の停止と開始」を参照してください。
GitHub Codespaces でコミットに署名できない場合は、コマンド ラインまたは Visual Studio Code のポップアップ ウィンドウにエラー メッセージ gpg failed to sign the data
が表示されることがあります。
この記事の以下のセクションでは、このエラーの一般的な原因に関するトラブルシューティングのアドバイスを提供します。
- GitHub Codespaces の設定で以前に GPG 検証を有効にしており、最近 GPG 検証を無効にしたか、信頼するリポジトリの一覧からリポジトリを削除した場合は、Git が引き続きコミットに署名しようとしている可能性があります。 詳しくは、「GPG 検証を無効にした後のエラー」を参照してください。
- codespace に対して GPG 検証が有効になっている場合は、コミットの署名に必要な Git 構成をオーバーライドしている可能性があります。 詳しくは、「競合する Git 構成によって発生するエラー」を参照してください。
- codespace に対して GPG 検証が無効になっており、VS Code の [ソース管理] ビューからコミットしようとしたときにエラーが発生した場合は、VS Code の設定が原因である可能性があります。 詳しくは、「VS Code の [ソース管理] ビューのエラー」を参照してください。
GPG 検証を無効にした後のエラー
GPG 検証を有効にすると、GitHub Codespaces は、codespace で行ったすべてのコミットに既定で署名します。 これは、commit.gpgsign
Git 構成値を true
に設定することによって行われます。
GPG 検証を無効にしていて、既存の codespace で作業している場合、この値は引き続き true
に設定されます。 つまり、GitHub Codespaces はコミットに署名しようとしますが、GPG 検証設定を無効にしているため、それができません。
codespace で通常の署名なしのコミットを続ける場合は、ターミナルで次のコマンドを入力して、commit.gpgsign
を false
の既定値にリセットします。
git config --unset commit.gpgsign
git config --unset commit.gpgsign
値が構成から正しく削除されたことを確認するには、「git config --list
」と入力します。 commit.gpgsign
の値は一覧に表示されないはずです。
競合する Git 構成によって発生するエラー
コミットに自動的に署名するために、GitHub Codespaces は codespace に特定の Git 構成値を設定します。 GitHub Codespaces によって設定された値をオーバーライドすると、コミットに署名できない可能性があります。
GitHub Codespaces を Git 構成ファイルを含むドットファイル リポジトリにリンクしている場合、これらの値を誤ってオーバーライドしている可能性があります。 GitHub Codespaces でのドットファイルの使用について詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」をご覧ください。
構成の競合の確認
GPG でコミットに署名するために、GitHub Codespaces はシステム レベルで次の Git 構成値を自動的に設定します。
構成設定 | 必須値 |
---|---|
user.name | GitHub プロファイルに設定されているフル ネームと一致する必要があります |
credential.helper | /.codespaces/bin/gitcredential_github.sh に設定されている必要があります。 |
gpg.program | /.codespaces/bin/gh-gpgsign に設定されている必要があります。 |
これらの値が codespace で正しく設定されていることを確認するには、git config --list --show-origin
コマンドを使用します。 GitHub Codespaces はシステム レベルでこの構成を設定するため、必要な構成設定は /usr/local/etc/gitconfig
から行う必要があります。
$ 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
上記の値に加えて、codespace で使用されているドットファイルに次のいずれかの値が含まれていると、エラーが発生する可能性があります。
user.signingkey
の Git 構成値commit.gpgsign
の Git 構成値- 手動で設定された
GITHUB_TOKEN
構成の競合の削除
GitHub Codespaces の自動 GPG 検証を有効にしたままにするには、codespace で使用されているドットファイルから競合する構成を削除する必要があります。
たとえば、ローカル コンピューター上のグローバル .gitconfig
ファイルに gpg.program
の値が含まれており、このファイルを GitHub Codespaces にリンクされているドットファイル リポジトリにプッシュした場合、代わりにこのファイルから gpg.program
を削除し、ローカル コンピューターのシステム レベルで設定することができます。
メモ: ドットファイル リポジトリに対する変更は、作成した新しい codespace には適用されますが、既存の codespace には適用されません。
-
ローカル コンピューターでターミナルを開きます。
-
競合する値を
~/.gitconfig
(Mac/Linux) またはC:\Users\YOUR-USER\.gitconfig
(Windows) から削除するには、git config --global --unset
コマンドを使用します。git config --global --unset gpg.program
-
変更を GitHub のドットファイル リポジトリにプッシュします。
-
必要に応じて、ローカル構成を保持するには、ドットファイル リポジトリにプッシュしない Git 構成ファイルで値をもう一度設定します。
たとえば、
--system
フラグを使用して、PATH/etc/gitconfig
のシステム レベル ファイルで構成を設定でます。ここで、PATH
は Git がシステムにインストールされているディレクトリです。git config --system gpg.program gpg2
または、ドットファイル リポジトリに install.sh
などの認識されたファイルのインストール スクリプトが含まれている場合は、$CODESPACES
環境変数を使用して、codespace にいない場合にのみ gpg.program
を設定するなどの条件付きロジックを追加できます。 次の例では、codespace にいない場合、-z "$CODESPACES"
が true
を返します。
if [ -z "$CODESPACES" ]; then git config --global gpg.program gpg2 fi
if [ -z "$CODESPACES" ]; then
git config --global gpg.program gpg2
fi
VS Code の [ソース管理] ビューのエラー
GitHub Codespaces の設定で GPG 検証が無効になっている場合、または codespace を作成したリポジトリが信頼するリポジトリの一覧に含まれていない場合、Git によってコミットへの署名が試みられることはありません。 VS Code の [ソース管理] ビューからコミットしようとしたときに署名エラーが発生する場合は、codespace で VS Code の設定をチェックする必要があります。
-
ウィンドウの左下隅にある [] を選択し、 [設定] をクリックします。
-
[ユーザー] タブの検索バーで、「gpg」を検索します。
-
[GPG または X.509 によるコミットの署名を有効にする] 設定がオフになっていることを確認します。
この設定が有効になっている場合は、チェックボックスをオフにして VS Code がコミットを署名しないようにするか、作業するリポジトリに対して GPG 検証を有効にして、コミットを正常に署名できるようにする必要があります。
VS Code の設定を変更する場合に、変更内容を作成した他の codespace と共有する場合は、Settings Sync が有効になっていることを確認する必要があります。 信頼するリポジトリから作成された codespace でのみ Settings Sync をオンにする必要があります。 詳しくは、「アカウントの GitHub Codespaces をパーソナライズする」を参照してください。
参考資料
- 「コミット署名の検証について」
- Git の公式ドキュメントの
git config