起きたことや背景
githubって仕事で使っていて、自分のプライベート用のはあんまり使ってなかったんですよね。
役割的に使うことがあんまりなかった、っていうのもあるんですが。
最近は、code-agentを使ったり、copilot使ったりとかしたくて色々調査、結果的にgithubを触る機会が増えています。
で、gitの初期設定ね、いろんなPCでやっていたわけなんですけど・・・。
意識せずに、ユーザー名とか、メールアドレスを設定していたら、知らない人がContributorとして連携されちゃったんですね!
誰だこのひとー?!
と勿論なりました。さあていったい何が起きたんだ?!と調査&手直しすることになりました。
何をしたか?
vscodeとかで最初に、ユーザー名や、メールアドレス設定しますよね?あれをしたんですよ。
自分のメールアドレス晒したくないから、適当な値を入れていたんです。
hogehogeとかそんな感じの。
いくつかのPCを使って触っていたから、テキトーでいいか~・・・という感じでやったらさあ大変。
知らない人がContributorに設定されちゃったんですね!
ちなみに、コマンドはこんな感じの。
$ git config --global user.name "bluelemmon"
$ git config --global user.email "hogehoge@example.com"
こんなのも設定しました。
$ git config --global user.name "bluelemmon"
$ git config --global user.email "sample@sample"
ただ、Contributorとして連携されているアカウントは、削除されたか、非公開であるアカウントであることはわかりました。
多分、hogehogeの方かな。
どうしてわかったか?
ふとね、githubのスマホアプリケーションを入れたんですよ。
外出先から、ぽちぽちしてみたいなーと思って。
で入れてみたら・・リポジトリのところに、コントリビューターって項目がある。それでわかりました。
ちなみに、PC版のWebではこの項目は、insightというメニューに隠されていて、Github Proにしないとみることができません。
無料版使ってましてね!有料版にしたいかも・・と思っていたらこのような・・!
そしてどうしたか?
なんだこいつー?!ということで調査開始。
とりあえず、gemini様に聞いてみました。
結構ちゃんと答えてくれたのはありがたかった!
回答
以下、geminiの回答を少し整形します。
その場合、誰かがコミットした際に、あなたのGitHubアカウントに紐づいているメールアドレスを誤って使用してしまった可能性が高いです。
GitHubの貢献者(Contributor)リストは、コミット履歴に記載されたメールアドレスを基に生成されます。そのため、たとえその人がリポジトリのコラボレーターでなくても、あなたのメールアドレスでコミットしていれば、あなたの貢献としてカウントされてしまうのです。
この問題を解決するには、コミット履歴のメールアドレスを修正する必要があります。
解決策:コミット履歴を修正する
コミット履歴を修正するには、git filter-repoというツールを使うのが最も安全で推奨される方法です。これは、過去のコミット履歴をまとめて書き換えるためのツールです。
そう、メールアドレスを元に、Contributorは生成されるってこと・・ことかー!!
ちなみに、forkしても永遠に引き継がれるので今のうちにちゃんと綺麗にしておく必要があります。
git filter-repoをインストールする
Pythonのpipコマンドを使ってインストールできます。
pip install git-filter-repo
正しいメールアドレスと間違ったメールアドレスの対応表を作成する
mailmap.txtというファイルを作成し、以下の形式で記述します。
※windowsの場合、txtを作成しないとエラーになった
- 左側にあなたの正しいメールアドレスと名前を入れる
- 右側に間違って使用されたメールアドレスを入れる
正しい名前 <正しいメールアドレス> 間違った名前 <間違ったメールアドレス>
ちなみに私は複数はいっていたので、3行ぐらいかきました・・w
bluelemmon <正しいメールアドレス> bluelemmon <sample@sample>
bluelemmon <正しいメールアドレス> bluelemmon <hogehoge@example.com>
bluelemmon <正しいメールアドレス> Lemmon <間違っているメールアドレス>
だいぶ適当に設定したね!と自分にツッコむ。
git filter-repoコマンドを実行する
リポジトリのローカルディレクトリで、以下のコマンドを実行します。
注意: このコマンドを実行すると、リポジトリの履歴が完全に書き換わります。実行前に必ずリポジトリをバックアップするか、新しいクローンを作成してください。
git filter-repo --mailmap mailmap.txt
変更をGitHubにプッシュする
履歴を上書きするため、--forceオプションを使って強制プッシュします。
git push --force
この手順が完了すると、GitHubのコミット履歴が修正され、貢献者リストも順次更新されます。
尚、mainリポジトリだけにして、pushすると綺麗に入るかなと思います。
上記にて、上書きすることができました。
ホント、ちゃんと設定しましょうね~・・・と肝に銘じました。
ちなみに、怪しいメールアドレスのアカウント自体は、Contributorに設定はされているものの権限はないので、リポジトリを見ることはできません。
補足
GitHubのメールアドレスも設定ページから確認することが可能です。
下記方法を記載しておくので参考にしてください。
まとめと教訓
メールアドレスやユーザー名はちゃんと設定しよう!(テキトーなメアドはだめ・・💦)