名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

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 が多重起動しないようにするみたいなのは大変参考になった。

まとめ

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