はじめに
魔が差して、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
ユーザー名を変更できそうな新たなる希望
今はTheRed
ユーザが存在するからどっちでコミットしてもOKだけど、
この状態でユーザー名を変えると4494300+TheRed@
だけは生き残るはず。
ってことは、
- 今日以降
4494300+TheRed@
をuser.email
にした状態でガシガシコミットしていく - メジャーなリポジトリの履歴から
TheRed@
が埋もれた頃にユーザー名変更 - 過去分のコミットは潔く諦める
- 新しく
TheRed
ユーザーが登録されてもxxxxxxx+TheRed@
でコミットしてくれれば自分には影響なし
で混乱なく移行できそうな感じです!
まだMergeされてないプルリクとかあるので、
現時点ではそっとメアドだけ変更して寝かせておくことにしまーす
追記:ユーザー名変更しました!
2018/07/09に検証してこの記事を公開。3ヶ月間寝かせて、
2018/10/15にユーザー名を変更しました!
GitHubのユーザー名を「TheRed」から「the-red」に変えてしまいましたー!https://t.co/4YMHqnroTU
— Hisaki Akaza (The Red) (@the_red315) 2018年10月15日
コミット履歴を見ると、6月11時点では旧アカウント、8月9日以降は新アカウント扱いにちゃんとなっておりますね!想定通り
https://github.com/goqoo-on-kintone/goqoo/commits/b36f0b957819e60791fce402f2367df2a029615d
追記:旧ユーザー名が他の人に登録された結果…
最初に書いたこの危惧が、現実になってしまいました。。。
次に誰かがTheRedアカウントを取得してしまったら、
僕の過去のコミット履歴が全部他人の顔に変わってしまうんじゃないか??
過去のコミット履歴に出てくる「thered」というユーザーをクリックすると別人のプロフィールが出るようになっちゃいました。たまたま以前の僕とハンドルネームが同じな、僕とは無関係の人です。
TheRed@users.noreply.github.com
でコミットしていた時代のログが、軒並み別人に置き換わってしまいました。
これは気持ち悪いなぁ。。。そしてこの人にも迷惑かけちゃってるよなぁ。。。ごめんね。
でも昔のをコミットを全部filter-branchするのも嫌なので、これで仕方ないと思うことにします
2018年の8月時点で気づいたので、まだ影響範囲は少なくて良かったです。
ではまた〜。