BrewからGPGをインストールしました。
brew install gpg
Gnupg2-2.0.30_2です。
コミットすると、エラーメッセージが表示されます。
You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <[email protected]>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05
error: gpg failed to sign the data
fatal: failed to write commit object
私はコマンドを使用しました:
gpg --list-secret-keys | grep ^sec
そしてそれは私に戻ってきます:
sec 2048R/1111AAAA 2017-01-05
次に、このコマンドを使用しました。
git config --global user.signingkey 1111AAAA
コミットすると、同じエラーメッセージが返されます。
この問題を解決するにはどうすればよいですか?
パスフレーズのプロンプトがまったく表示されない場合(自分がパスフレーズであるかどうかは言及しません...)、解決策は、それを容易にするためのプログラムもインストールすることです。最も一般的なのは pinentry です。
brew install pinentry-mac
したがって、それをインストールして再試行しますmay動作させます。しかし、そうでない場合は、適切なGPGプログラムを使用/検索するgit
を確認する必要があります。最近では、本当にgpg2
ので、まだインストールしていない場合は、以下を実行します。
brew install gnupg2
そして、git
にGPGプログラムがあなたに望んでいることを伝えるには、次のようにします。
git config --global gpg.program gpg2
その時点で、もう一度コミットしてみてください。うまくいくかもしれません。
しかし、そうでない場合は、これを試してください:
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
…そしてもう一度やり直してください。
注:以下のコメントによると、この変更を有効にするには、変更後に再起動する必要があるようです。
MacOSマシンでこの問題に直面している人には、これを試してください:
brew uninstall gpg
_brew install gpg2
_brew install pinentry-mac
_(必要な場合)gpg --full-generate-key
_アルゴリズムを使用してキーを作成します。gpg --list-keys
_git config --global user.signingkey <Key from your list>
_git config --global gpg.program /usr/local/bin/gpg
_git config --global commit.gpgsign true
_gpg --armor --export <key>
_を使用し、このキーをGPGキーでGitHubに追加します。 https://github.com/settings/keys (with STARTおよびEND行含まれます)問題がまだ存在する場合:
test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile
echo 'export GPG_TTY=$(tty)' >> ~/.profile
問題がまだ存在する場合:
https://gpgtools.org をインストールし、メニューバーからSignを押して、使用したキーに署名します:Key-> Sign
問題がまだ存在する場合:
に移動します:グローバル_.gitconfig
_ファイル(私の場合は)にあります:_/Users/gent/.gitconfig
_そして。gitconfigを変更しますファイル(Eメールと名前が、キーの生成中に作成したものと同じであることを確認してください):
_[user]
email = [email protected]
name = Gent
signingkey = <YOURKEY>
[gpg]
program = /usr/local/bin/gpg
[commit]
gpsign = true
gpgsign = true
[filter "lfs"]
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
[credential]
helper = osxkeychain
_
p.s以前の回答からこの回答を取りました: gpgはデータの致命的な署名に失敗しました:コミットオブジェクトの書き込みに失敗しました[Git 2.10.0]
あなたの質問は、あなたが実際にコミットに署名することを前提としています。そうでない場合、修正は非常に簡単です-コミット署名をオフにします:
git config --global commit.gpgsign false
私の場合、コミット署名を含むいくつかのデフォルトのgit構成設定を継承していました。