GitHubのIDを変更したら本名を公開するハメになったので調査した
起きたこと
先日、GitHubのIDを変更したら、僕の本名がGitHub上に大公開されてしまいましたw
本件の対処と調査の記録を書きます^^
以下記事と同じことが起きていました。
原因
コミットのAuthorが漢字の本名になっていた
- OSのユーザー名を漢字の本名に設定していた。
- gitconfigのuser.nameは、デフォルトだとOSのユーザー名になる。
上記2つから、GitのコミットのAuthorが漢字の本名になっていました。
実際に.gitconfig
を確認すると、以下のようになっていました。
[user]
name = 本名
email = shlia34@users.noreply.github.com
この時点で、Gitのコミットには本名が書かれてしまってるわけです。リポジトリをクローンして、git log
などで覗かれると名前がバレます。
GitHubのIDを変更したことによって、IDとnoreplyアドレスが切り離された
もともとGitHubが提供してくれているnoreplyアドレスを使用していました。
shlia34@users.noreply.github.com
というアドレスでGitにも登録してましたが、shira79
にGitHubのIDを変更したため、一致しなくなりました。
Gitのコミットに紐づくアドレスとGitHubに登録してるアドレスが一致する場合、GitHubのアバター・ユーザー名を表示するという仕様らしいです。
(※詳しくは記事末尾の「番外編(なりすましについて)」で触れます。)
つまり、今までは一致していたアドレスがIDの変更にとって一致しなくなり、GitHubアカウントではなくGitの情報が表示され今回の現象が起きたということになります。
対応
まずは、.gitconfig
を編集して、名前を適当に、アドレスは今回のIDと対応するよう、変更しました。これで今後のコミットは大丈夫です。
次に、過去のコミットの名前とアドレスを変更したいと思います。
僕のコミットは全て僕個人のリポジトリでしたので、以下のコマンドでコミット履歴を変更してからgit push --force
をかましました。(無理やり感が強いですが)
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='shira'; \
GIT_AUTHOR_EMAIL='shira79@users.noreply.github.com'; \
GIT_COMMITTER_NAME='shira'; \
GIT_COMMITTER_EMAIL='shira79@users.noreply.github.com';" HEAD
git push --force origin master
対応は以上です。
番外編(なりすましについて)
Gitのコミットに紐づくアドレスとGitHubに登録してるアドレスが一致する場合、GitHubのアバター・ユーザー名を表示するという仕様らしいです。
(ただ正式な記載は見つけられなかったです><)
僕は気づいてしまったんです... ホームディレクトリの.gitconfigのメールアドレスを誰かがGithubアカウントに登録しているメールアドレスに書き換えると以降の自分のすべてのコミットをその誰かのアカウントが行ったとGithub上では表示されることに...
なりすまし防止!Githubへの署名付きコミット Qiita
.gitconfig
を書き換えることでなりすましが成立するのではと思い、友人に許可をもらった上で実験しました^^
手順は以下になります。
-
git clone
からのgit log
でcommitに紐づくメールアドレスを確認 -
.gitconfig
のuser
ブロックのemail
を取得したアドレスに変更 - コミット&プッシュする
実際のリポジトリ
上記コミットのうち、Verified
タグがついているものは本人のコミットですが、それ以外は僕がなりすましたコミットになります。
Verified
タグは署名付きのコミットの場合に表示されます。署名付きの場合、本人であることを保証します。GPGまたはS/MIMEを使うことで署名をすることができます。
GitHub Docs コミットに署名する
なりすましを防ぐためには、署名付きでコミットしましょうということになります。とはいえ署名なしコミットであればは問題なくできますしGitHubも変わらずなりすましたかのような表示のままです。
すなわち、以下のように整理できるかと思います。
- 署名付きコミット → 本人であることを保証する
- 署名なしコミット → 本人かどうかわからない(名乗っているだけ)
ちなみにGitHubのリポジトリのブランチの設定画面から、署名済みコミットしか許容しないというオプションもあったりします^^
感想
- 名前を晒したところでそんなに困らない
- 少なくとも僕になりすまそうと思う人はいない
Discussion