エラー「プッシュするとプライベートメールアドレスが公開されます」


110

GitHub / VCSは初めてです。

GitHubでプロジェクトを共有しようとすると、次のエラーメッセージが表示されます。

    Can't finish GitHub sharing process
    Successfully created project 'myproject' on GitHub, but initial push failed:
    remote: error: GH007: Your push would publish a private email address.
    failed to push some refs to 'https://github.com/me/myproject.git'

エラーメッセージをググってみたがヒットしなかった。Stack Exchangeも検索しましたが、葉巻はありませんでした。この問題を解決するにはどうすればよいですか?

回答:


64

私も同じerror: GH007メッセージを経験し、以下を使用して問題を解決しました。

  1. 移動し、あなたのコミットのメールアドレスを設定します
  2. コンピュータのすべてのリポジトリの電子メールアドレス設定に従ってください。
  3. GitHubアカウントを開き、[設定][ メール]に移動します。
  4. [ メールアドレスを非公開にする]チェックボックスをオンにします。
  5. [ メールを公開するコマンドラインプッシュをブロックする]チェックボックスをオフにします。

ただし、これによりメールアドレスが公開される可能性があります。


24
これは解決策ですが、実際にあなたのメールアドレスを公開する可能性があります。まだプッシュされていないコミットがある場合は、メールを公開する[コマンドラインプッシュをブロックする]チェックボックスをオフにする必要があります。次に、それらの保留中のコミットをプッシュできます。その後、メールアドレスを返信なしのメールアドレスに更新し、コマンドラインプッシュをブロックして私のメールを再度公開することを確認して、アドレスを非公開にします。
SvenAelterman 2017

5
@SvenAelterman update your email address to the no-reply email addressどこ?github設定またはローカルマシンのどこかに、おそらくプライベートメールアドレスを送信/使用していますか?チェックボックスをクリックするだけではなく、githubによって生成された電子メールアドレスを直接githubにコピーして貼り付けることになっている可能性があるので、直観に反する印象を受けます。またはそれは??
ヒッピートレイル2017年

15
最新のコミット用にメールを変更するにはgit commit --amend --author="Author Name <email@address.com>"
dspacejs '28

9
ここで @Winfriedのソリューションを使用する方がはるかに良いです。電子メールアドレスを公開しない
Connor

8
確かに、正しい答えは@Winfriedのstackoverflow.com/a/51097104/7872793です。
シェーン

229

「メールを公開するコマンドラインプッシュをブロックする」機能を有効にする場合は、返信なしのメールアドレスを使用するようにGitを設定することもできます。心配しないでください。これは貢献度グラフには影響しません。すべてのコミットは引き続きアカウントに関連付けられます。

  1. ターミナルを開きます。

  2. 現在の作業ディレクトリを、Gitコミットに関連付けるメールアドレスを設定するローカルリポジトリに変更します。

  3. GitHubの個人設定→メールでGitHub noreplyアドレスを見つけます。[ メールアドレスを非公開にする]チェックボックスの説明に記載されています。通常、一意の識別子とユーザー名で始まります。

  4. Gitでメールアドレスを設定します。GitHubが提供する返信なしのメールアドレスを使用します。

    • コンピューター上のすべてのリポジトリにメールアドレスを設定する

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • 単一のリポジトリのメールアドレスを設定する

      git config user.email "{ID}+{username}@users.noreply.github.com"
      
  5. 最後のコミットで作成者情報をリセットします。

    git commit --amend --reset-author
    

    プライベート電子メールアドレスで複数のコミットがある場合は、この回答を参照してください。

  6. noreplyの電子メールアドレスでコミットをプッシュできるようになりました。今後のコミットにもnoreplyの電子メールアドレスが含まれます。

    git push
    

Gitを設定すると、コミットは代替の「返信なし」メールアドレスを使用し、それ以外のプッシュは拒否されます。


28
これは受け入れられる答えになるはずです。@ sofia-fernandez回答はメールアドレスを公開する可能性があります。これを少し短くして読みやすくする方法はありますか?あなたは唯一の違いは2つの主要なセクション持って--global
コナー

Linuxインターフェースで問題が発生しました(SourceTreeターミナルを使用し、VIを使用してからしばらく経ちました)-m <comment>。それを避けたい場合は追加できます。
MikeL 2018

2

おそらくGitHubの電子メールプライバシー機能を有効にしている(またはデフォルトで有効になっている)はずです。

詳細については、このページのGitHubヘルプをご覧ください

要するに、ユーザーが実際のメールアドレスである場合にプッシュを防ぐことができる(アカウントで有効になっている)有効にできるトグルがあります。代わりに匿名アドレスを使用できます(または機能を無効にすることを選択します)。

両方のオプションの詳細は、同じページにあります


ありがとう!メールアドレスを匿名化して問題を解決しました!
user156060

匿名化されたメールアドレスを使用することは良い解決策です。2017年7月18日より前に作成した場合は、7桁のランダムな数字を追加するためにもう一度作成することができます。
SvenAelterman 2017

ウィンフリードの答えは自己完結型の答えです。
Peter Mortensen、

0
  1. に行く Settings
  2. をクリックしEmailsます。一番下までスクロールします。Keep my email addresses privateセクションがあります。
  3. そこに記載されている公開メールIDを書き留めます。
  4. 次のコマンドを使用して、前の手順で説明したパブリックメールIDを使用してローカルのグローバルメールIDをリセットします。
$ git config — global user.email "<user_email_id>"
  1. ブロックされていた最後のローカルコミットを元に戻します。
$ git reset --soft HEAD~1 
  1. 新たなコミットをしてプッシュします。それが動作します。

-2

同じ問題がありました。私の解決策は下の写真にあります:

GitHub設定


7
メールを公開し、すべてのスクレイパーなどに公開するように設定しましたが、そこからぼかします
Lesto

これは、受け入れられた回答(ほぼ1年前に投稿されたもの)とどう違うのですか?
Peter Mortensen、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.