gpg はデータの署名に失敗しました 致命的: コミットオブジェクトの書き込みに失敗しました [Git 2.10.0] 質問する

gpg はデータの署名に失敗しました 致命的: コミットオブジェクトの書き込みに失敗しました [Git 2.10.0] 質問する

私はいくつかの記事をフォローしましたかわいい属性オンギット2.10リリースノート。gitを2.10.0にアップグレードし、グローバルに変更を加えた.gitconfig結果、次のようになりました。

[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = xyz
    email = [email protected]
    signingkey = AAAAAAA
[core]
    excludesfile = /Users/xyz/.gitignore_global
    editor = 'subl' --wait
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
    old = red strike
    new = green italic

しかし、今私はコミットに署名しようとしています

git commit -a -S -m "message"

次のエラーが表示されます -

秘密鍵のロックを解除するにはパスフレーズが必要です

ユーザー: 「XYZ (デジタル署名)」

2048 ビット RSA キー、ID AAAAAAAAA、作成日 2016-07-01

エラー: gpg がデータの署名に失敗しました 致命的: コミット オブジェクトの書き込みに失敗しました

- 変更をコミットするにはgit commit -a -m "message"

同じ問題を克服する方法はありますか? または、gpggit のアップグレードに合わせて構成を変更する必要はありますか?


アップデート1

さらに有用性を追求し、GPG キーを使用して Git のコミットを「自動署名」する方法はありますか?すでにキーを設定しています

git config --global user.signingkey ED5CDE14(with my key) 
git config --global commit.gpgsign true

そして明らかに同じエラーが発生します。

ベストアンサー1

macOS でこの問題に遭遇しました。

元の回答:

gpggpg の更新 (brew の)によっての場所が に変更されたようですgpg1。git が gpg を検索するバイナリを変更できます。

git config --global gpg.program gpg1

gpg1 がない場合は: brew install gpg1

更新された回答:

gpg1は廃止されるようです/「使用を徐々に中止した」したがって、実際には gpg2 にアップデートする必要があると思われますが、残念ながらこれにはさらにいくつかの手順と時間がかかります。

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program $(brew --prefix)/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

最初の部分はgpg2をインストールし、後半は使用するにはハックが必要トラブルシューティングについては、この答え(これは Linux に関するもので、brew に関するものではありませんが)、良いテストが提案されています。

echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

このテストが成功した場合 (エラーなし/出力に PGP 署名が含まれる場合)、最新の gpg バージョンに正常に更新されています。

これで、git 署名を再び使用できるようになります。次の
ものが必要であることに注意してください。

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

注: 署名されたコミットを実行した後、次のコマンドで署名を確認できます。

git log --show-signature -1

これには最後のコミットの gpg 情報が含まれます。

おすすめ記事