あんた誰?
Nanai10a(なないじゅあ)と申します。
この世の最底辺の技能知識0/注意散漫erです。
この記事は何?
今回はGitでGPG署名付きcommitをしてGitHubに上げていたら、いつのまにかUnverifiedになっていたお話をしていこうと思います。
環境
今回やっていく環境の詳細は以下の通りです。
OS : Windows 10 Home Edition
Prologue
私は今年の6月頃から本格的にGit, GitHubを使うようになりました。
ちょうどその使い始めの時にGPG署名についてやGitの署名付きcommitについて聞いたり調べたり教わったりと、ちょっとだけかじっていました。
それで特に問題はなくGitの署名付きcommitでGitHubにVerified
のバッヂをつけることに成功し、平穏に過ごしていました。
しかし最近になってUnverified
の文字が…あれ?
私、設定したよな?
その時何をしていたか
実はその時、あるbranchのcommit群を別branchに移したくて、
git checkout #[移行先branch]
git cherry-pick #[commit]
git checkout #[移行元branch]
git reset HEAD~#[移行commit数]
なんて操作を行っていたんですね。
※branch管理はしっかりしましょうね!(自戒)
んで移行後のbranchのcommitがしっかり反映されてるかなと、GitHubにpushしまして…さてGitHubを開きますと、
Unverified
…あれ???
いいえ、目的自体は達成したのです。目的のcommitは私の思惑通り移行が完了していたのです。
しかし…Unverified
…???
私は前に署名付きcommitの準備をして、成功したはずです。
なんだこれ。
調べてみると作業をしていた他のRepositoryの私のcommitもみんなUnverified
…あれれれれれ?????
何がどうしたというのだ。
どうにかしようと闇雲に…
その時何故か私は
「きっとこのcherry-pick
でしっかり署名ができていないのかも知れない、署名し直してみよう」と思い立ちまして。
臨時の別ブランチにcommitを移し、再びcherry-pick
、加えて1commitづつ、
git commit --amend -S
と明示的に署名を行いました。
まぁもちろん治るはずもなく。
というか最初からcherry-pick
した時にGPGのパスフレーズを入力していたではありませんか。
まぁこんな事を繰り返して。
次はメールアドレスを疑ったわけです。
・GitHubに紐付けてあるアドレス
・GPG鍵に使われているアドレス
を確認しました。
…うん。同じものが紐付けられているな。
じゃあ鍵が間違っている?
再度GPG鍵をexportしてGitHubに貼り付けてみる。
Key already exists and Public key already exists
…うん。だって登録しましたから。そりゃそうでしょう。
…あれ、本当になんで???
help me...
署名付きcommitに関することを調べ直しまして、同じ鍵で再度Gitに設定し直したりしました。
が、治らず。
「こりゃ駄目だな」と愚痴のように私はTwitterにtweetをし、怠けていました。
あ~~~~~~gpg署名どうしちまったんだよ~~!!! Unverifiedだってぇ!? まじでどうしたんだろ…
— Nanai10a (@771tenNext) 2020年8月17日
しかしその数十秒後…
Discord某鯖にて…
https://twitter.com/771tenNext/status/1295271710195761154?s=20
何だろうなと思ってみたらこれだったので、
Gitに設定されてるメールアドレスとGPG鍵に登録してあるメールアドレスが違うみたい
― φ
おっと?(φ氏については後ほど)
解決へ
という訳で
git config --global user.email
#[GPG鍵のものとは違うアドレス]
※[GPG鍵のものとは違うアドレス]はGitHubには紐付けてありますが
ふぅ~~~~~!!!!!(自分への憤りの音)
git config --global user.email #[GPG鍵のものと同じアドレス]
さて運命の瞬間。
git commit --amend
git push -f
※commit.gpgsign
は true
にしてあります
Verified
はい!!!!!!!
解 決 ! ! ! ! !
余談
これなんで起きたのかはわかっていません…が、それに関わりそうな操作について一応
・GitHubアカウントに紐づけていたプライマリメールアドレスを変更していた
・そのメールアドレスを使ってIntelliJ IDEA CommunityやEclipse上でGitHubにログインする機会があった
もしかして…と思い書き残しますが、どっちにせよこちらの過失なのでなんとも…。
自分でGitのuser.email
を変更していた可能性も大いにあります…。
まとめ
・Gitの署名付きコミットはGitと鍵に紐付けたメールアドレスが同じでないと駄目。
これに尽きる。
以上。
φ氏について
名前はloxygenという方です。のだのだ言ってます。(「φ」はニックネームなので…)
(なんかニックネームをminimal化する風潮があるのでこうなっている、ちなみに私は「.」)
某鯖で色々とやっているお方です。(最近はBot開発に明け暮れていたかな)
ちょくちょく助けれられていて頭が上がりません…。
覗きに行ってあげて下さい。
HP : https://loxygen.dev/
Twitter本垢 : @loxygenk
GitHub : loxygenK