[解決済み】gpgがデータの署名に失敗した fatal: failed to write commit object [Git 2.10.0].
質問
私は、いくつかの記事で
かわいい
属性は
Git 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 (Digitally Signed) "。
2048ビットRSA鍵、ID AAAAAAAA、2016-07-01作成
error: gpg failed to sign the data fatal: failed to write commit オブジェクト
備考
- を使用して変更をコミットすることができます。
git commit -a -m "message"
同じように克服する方法はありますか?あるいは
gpg
を設定することで、git のアップグレードに対応できますか?
アップデート1
また、さらなる有用性を求めて、以下も。 Git のコミットを GPG 鍵で自動署名する方法はありますか? . を使って鍵の設定は済んでいます。
git config --global user.signingkey ED5CDE14(with my key)
git config --global commit.gpgsign true
と表示され、明らかに同じエラーが発生します。
解決方法は?
OSXでこの問題に遭遇しました。
オリジナルの回答です。
gpgのアップデート(brewの)で
gpg
から
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 /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
最近だとM1マックとか。
echo "pinentry-program /opt/homebrew/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
最初の部分は gpg2 をインストールし、後の部分は 使用するために必要なハック . トラブルシューティングについては この回答 (ただし、これは brew ではなく linux についてです)、良いテストを提案しています。
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 情報が含まれます。
関連
-
[解決済み] Git のコミット回数を取得するにはどうすればよいですか?
-
[解決済み] Git で現在のコミットのハッシュを取得する方法は?
-
[解決済み] Git のコミットで変更点を確認するには?
-
[解決済み] git のコミットを削除しても、変更は維持できますか?
-
[解決済み] git のグローバルな設定データはどこに保存されていますか?
-
[解決済み] git commit」と「git push」の違いは何ですか?
-
[解決済み] git recover 削除されたファイルを、削除後にコミットが行われなかった場合に復元する。
-
[解決済み] Git リポジトリで現在のコミットを唯一の(初期)コミットにする?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitにプッシュすると、エラーコード403 fatal: HTTPリクエストに失敗しました が返ってくる。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】git push >> fatal: 設定されたプッシュ先がありません。
-
[解決済み】ローカルGitブランチとそのリモートブランチを比較する方法
-
[解決済み] git stashを元に戻す
-
[解決済み] git commit signing failed: secret key not available.
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] Gitのフォルダ構造で変更・追加されたファイルのみをエクスポートする機能
-
[解決済み] 新しいBitbucketでリポジトリを削除するにはどうすればよいですか?
-
[解決済み] Git作者不明
-
[解決済み】GitのコミットをGPGキーで「自動署名」する方法はありますか?
-
[解決済み】Gitエラー - gpgがデータへの署名に失敗しました。