名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

GitのSigned Commitに苦戦していた話

久々に設定したのだが、あんまり覚えてなくて大変だった。

Macとちょっと勝手が違うのもあるのかもしれない…。

環境

やったこと

鍵づくり

とりあえずカギを作る。

ssh-keygen -t ed25519
ssh-keygen -t rsa -b 4096

gpg 周り

完全に忘れていたが、GitHubやGitLabの公式ページを参考にやる。

ここで完全に忘れていたというか、ごっちゃにしていたのだが下記の理解をした。

  • gpgとsshのキーは別で扱える
  • なので認証に使うsshキーがgpgでExportした何かである必要はない
  • 結局、認証はssh秘密鍵で行って、コミットはgpgの秘密鍵によって行われるので、独立

commit 時のエラー

やったがなんかうまく動かなかった…。

~/work/private/test-repo master* 21s
❯ git commit -S -m "My commit msg"
error: gpg failed to sign the data
fatal: failed to write commit object

なんででしょうね、と思ったのですが調べてみるとこういう事例があった。

https://stackoverflow.com/questions/39494631/gpg-failed-to-sign-the-data-fatal-failed-to-write-commit-object-git-2-10-0

ここでリンクされているこれを読む。

https://www.gnupg.org/(it)/documentation/manuals/gnupg/Common-Problems.html

GPG_TTY が正しくないケースらしく、これを環境変数に追加したらSigned Commitできた。

おまけ

ssh-add 常にしておきたいので、この記事を参考にした。

garicchi.com

一番最後のところの ssh-agent が多重起動しないようにするみたいなのは大変参考になった。

まとめ

開発以前でつまずきすぎだろと思ったので、開発環境を改めて整えるのは大変だなあという気持ちになりました(小並感)