4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitのGPG署名付きcommitとGitHubの連携で躓いた話

Last updated at Posted at 2020-08-19

あんた誰?

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をし、怠けていました。

しかしその数十秒後…

Discord某鯖にて…

https://twitter.com/771tenNext/status/1295271710195761154?s=20
image.png
何だろうなと思ってみたらこれだったので、
Gitに設定されてるメールアドレスとGPG鍵に登録してあるメールアドレスが違うみたい

― φ

おっと?(φ氏については後ほど)

解決へ

という訳で

git config --global user.email
#[GPG鍵のものとは違うアドレス]

※[GPG鍵のものとは違うアドレス]はGitHubには紐付けてありますが
ふぅ~~~~~!!!!!(自分への憤りの音)

git config --global user.email #[GPG鍵のものと同じアドレス]

さて運命の瞬間。

git commit --amend
git push -f

commit.gpgsigntrueにしてあります

Verified

はい!!!!!!!

解 決 ! ! ! ! !

余談

これなんで起きたのかはわかっていません…が、それに関わりそうな操作について一応

・GitHubアカウントに紐づけていたプライマリメールアドレスを変更していた
・そのメールアドレスを使ってIntelliJ IDEA CommunityやEclipse上でGitHubにログインする機会があった

もしかして…と思い書き残しますが、どっちにせよこちらの過失なのでなんとも…。
自分でGitのuser.emailを変更していた可能性も大いにあります…。

まとめ

・Gitの署名付きコミットはGitと鍵に紐付けたメールアドレスが同じでないと駄目。

これに尽きる。
以上。

φ氏について

名前はloxygenという方です。のだのだ言ってます。(「φ」はニックネームなので…)
(なんかニックネームをminimal化する風潮があるのでこうなっている、ちなみに私は「.」)
某鯖で色々とやっているお方です。(最近はBot開発に明け暮れていたかな)
ちょくちょく助けれられていて頭が上がりません…。
覗きに行ってあげて下さい。

HP : https://loxygen.dev/
Twitter本垢 : @loxygenk
GitHub : loxygenK

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?