私はいくつかの記事をフォローしましたかわいい属性オンギット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"
同じ問題を克服する方法はありますか? または、gpg
git のアップグレードに合わせて構成を変更する必要はありますか?
アップデート1
さらに有用性を追求し、GPG キーを使用して Git のコミットを「自動署名」する方法はありますか?すでにキーを設定しています
git config --global user.signingkey ED5CDE14(with my key)
git config --global commit.gpgsign true
そして明らかに同じエラーが発生します。
ベストアンサー1
macOS でこの問題に遭遇しました。
元の回答:
gpg
gpg の更新 (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 情報が含まれます。