#要点
- GitHubアカウントのメールアドレスと、pushする時に使うメールアドレスは別物。
- GitHub Desktop(Mac版)だけだと設定が直せないことがある。コマンドラインだいじ。
- 解決方法はこれ↓ (ID+usernameの所は各自読みかえが必要です)
$ git config --global user.email ID+username@users.noreply.github.com
$ git commit --amend --reset-author
#はじめに
先日(2019/1/7)、GitHubで無料ユーザでもプライベートリポジトリを持てるようになりましたね。
せっかくなので私も、手元にあるちょっとしたRailsプロジェクトをGitHubに上げてみようと思い立って試したところ、なかなかうまく行かない...
なお、環境は macOSX Mojave + VSCode 1.25.1 + Rails 5.2.2 + GitHub Desktop 1.5.1 です。
##実施したこと
- GitHubにログイン
- GitHub Desktop をダウンロード&インストール
- GitHubのWebサイト側でプライベートリポジトリを1つ作成
- ローカルリポジトリと紐付け
このあたりまで、いくつかのサイトを確認しつつ、特に問題なく進行。
##1つ目の問題
紐付けたリポジトリをGitHub Desktopから「Publish Branch」を実行しようとしたところ、
Cannot push these commits as they contain an email address marked as private on GitHub
というエラーが発生し、サーバにpushできません。
よくよく調べてみると、GitHubアカウントのメールアドレスと、pushする時に使うメールアドレスは別物であり、後者ではGitHub側から指定されたアドレスを使う必要があるようです。ここで設定したメールアドレスは公開情報になってしまうので。
そして、push用のアドレスは以下のいずれかとのこと。
- (2017/7/18以降に作成したアカウント) ID+ユーザ名@users.noreply.github.com
- (2017/7/18より前に作成したアカウント) ユーザ名@users.noreply.github.com
私の場合は、アカウント作成は2011年でしたので前者かと思いましたが、実は後者のアドレスになっていました。(ハマったポイントその1)
リポジトリを作成したのが今回が初めてだったからかもしれません。
##2つ目の問題
登録すべきアドレスがわかったので、GitHub Desktopの「Preferences...」から「Git」タブの「Email」欄を修正します。
これで良しと思いながら「Publish Branch」を押すと、、、また同じエラー。
うまく反映できていないようです。(ハマったポイントその2)
次のように、コマンドでpushしようとしてもダメ。
$ git push -u origin master
ここで、小一時間ハマり続け、、、
諦めかけたところで、改めて上のコマンドの結果をよく見たら
[remote rejected] master -> master (push declined due to email privacy restrictions)
という文言が。
それを手がかりにし、ようやくたどり着いた解決策がこれでした。(再掲)
$ git config --global user.email ID+username@users.noreply.github.com
$ git commit --amend --reset-author
Authorの所に、通常のメールアドレスが入ってしまっていたのを、 --reset-author で修正したということですね。
--amend は既存のcommitに対して、新たなcommitを作らずに修正を入れるオプションのようです。
そして「Publish Branch...」を実施すると、、、無事にサーバ側へpushされてくれました!
めでたしめでたし。
#参考リンク
ありがとうございました!
http://ryoichi0102.hatenablog.com/entry/2017/10/12/000713
http://takafumi-kimura.hatenablog.com/entry/2018/01/03/000000
#最後に
別にGitHub Desktopなんて入れなくてもよかったのかも?
みなさま使っておられますか?