22
12

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 1 year has passed since last update.

GitHubのユーザー名を変更するとnoreplyメールアドレスのコミット履歴はどうなるのか?

Last updated at Posted at 2018-07-09

はじめに

魔が差して、GitHubのユーザー名を変えたんですよ。
そしたら、過去のコミット履歴が全部自分のアカウントと切り離されちゃったので、
慌てて元に戻したんですよ。
そこから始まる新しいStory, Just for you

どうしてこうなった?

僕は一番最初にGitHubにpushした時から、user.emailとして「noreplyメールアドレス」を使ってて、
リアルなメールアドレスでは一度もpushしてません。
AuthorのメールアドレスをGitHub用のアドレスに変更する

GitHubユーザー名はTheRedなので、noreplyアドレスはTheRed@users.noreply.github.comになります。
ユーザー名を変更すると、元のTheRedアカウントは解放されて誰のものでもなくなるので、
TheRed@users.noreply.github.comのコミット履歴も誰でもなくなっちゃうんですね。。
当然といえば当然。

そこは許容するとしても、次に誰かがTheRedアカウントを取得してしまったら、
僕の過去のコミット履歴が全部他人の顔に変わってしまうんじゃないか??
というのを一番危惧してしまい、一旦元に戻しました。

おそらく、noreplyではなく本物のメールアドレスをuser.emailにしてる人が多いはず。
その場合はGitHubのユーザー名を変えてもメアドに影響ないので、この問題は発生しないのでしょう。
検索しても日本語では情報見つかりませんでした。

なんか興味あったので色々と試してみると、面白いことが分かってきたので、
以下にGitHubの挙動と未来への希望をまとめておきます。

noreplyメールアドレスの仕様変更

実は上に貼った記事は2014年の古い情報で、今はこんな仕様に変わってます。

GitHubでnoreplyとして認識されるメールアドレスは、
・2017/06/18より後にアカウントを作成した場合は "7桁のID+ユーザー名"
・2017/06/18より前にアカウントを作成した場合は "ユーザー名"
これに @users.noreply.github.com を付けたものになります。

GitHubのメールアドレスが漏れる?コミット時のメールアドレスにnoreplyを設定

去年の6月に変わったんですね。
僕が初回登録したのはもっと前なので"ユーザー名@"になってたんですが、
今回一度ユーザー名を変えて戻したタイミングで、メアド変わってました!
今は 4494300+TheRed@users.noreply.github.com となっております!

GitHubの挙動を実験

テスト用のGitHubアカウントをもう一つ持っていたので、
そっちのアカウントを変更しつつ、コミット時のメアドも変更しつつ
いくつか試してみました。

アカウント名はhosoiri-villagerで、去年登録したので
noreplyアドレスは既にこの形式でした。
32363877+hosoiri-villager@users.noreply.github.com

このアカウント名をioridaniに変更してみたところ、
noreplyアドレスの番号部分は変わらず!
「ユーザーID」みたいな扱いなんでしょうね。
32363877+ioridani@users.noreply.github.com

ローカルでgit commitするときに、user.emailを切り替えながら
数パターンやってみた結果がこちら。

メールアドレス GitHubで認識されるユーザー
4494300+TheRed@ TheRed
TheRed@ TheRed
32363877+ioridani@ ioridani
32363877+hosoiri-villager@ ioridani(自動変更)
hosoiri-villager@ (見つからず)

なるほど、"7桁のID+ユーザー名"のメアドでコミットされていれば、
ユーザー名を変更する前のコミットも自動的に紐づいてくれるんですね!
ID次第ってことなのですな。

実際のGitHub履歴とローカルgit logのキャプチャも晒しておきまーす。
https://github.com/TheRed/change-username-test/commits/master
スクリーンショット 2018-07-08 0.49.06.png

スクリーンショット 2018-07-08 0.49.18.png

ユーザー名を変更できそうな新たなる希望

今はTheRedユーザが存在するからどっちでコミットしてもOKだけど、
この状態でユーザー名を変えると4494300+TheRed@だけは生き残るはず。
ってことは、

  • 今日以降4494300+TheRed@user.emailにした状態でガシガシコミットしていく
  • メジャーなリポジトリの履歴からTheRed@が埋もれた頃にユーザー名変更
  • 過去分のコミットは潔く諦める
  • 新しくTheRedユーザーが登録されてもxxxxxxx+TheRed@でコミットしてくれれば自分には影響なし

で混乱なく移行できそうな感じです!
まだMergeされてないプルリクとかあるので、
現時点ではそっとメアドだけ変更して寝かせておくことにしまーす:smile:

追記:ユーザー名変更しました!

2018/07/09に検証してこの記事を公開。3ヶ月間寝かせて、
2018/10/15にユーザー名を変更しました!

コミット履歴を見ると、6月11時点では旧アカウント、8月9日以降は新アカウント扱いにちゃんとなっておりますね!想定通り :thumbsup:
https://github.com/goqoo-on-kintone/goqoo/commits/b36f0b957819e60791fce402f2367df2a029615d

追記:旧ユーザー名が他の人に登録された結果…

最初に書いたこの危惧が、現実になってしまいました。。。

次に誰かがTheRedアカウントを取得してしまったら、
僕の過去のコミット履歴が全部他人の顔に変わってしまうんじゃないか??

CleanShot 2023-09-22 at 14.31.18@2x.png

過去のコミット履歴に出てくる「thered」というユーザーをクリックすると別人のプロフィールが出るようになっちゃいました。たまたま以前の僕とハンドルネームが同じな、僕とは無関係の人です。
TheRed@users.noreply.github.comでコミットしていた時代のログが、軒並み別人に置き換わってしまいました。

これは気持ち悪いなぁ。。。そしてこの人にも迷惑かけちゃってるよなぁ。。。ごめんね。
でも昔のをコミットを全部filter-branchするのも嫌なので、これで仕方ないと思うことにします :sob:
2018年の8月時点で気づいたので、まだ影響範囲は少なくて良かったです。

ではまた〜。

22
12
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
22
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?