GitHub消息的含义:由于电子邮件隐私限制,推送被拒绝

Fra*_*ger 163 git github git-push

我已经接受并合并了github上的Pull Request,现在我不能再提交我的提交了.

消息是:

! [remote rejected] master -> master (push declined due to email privacy restrictions)
error: failed to push some refs to 'git@github.com:FranckFreiburger/vue-resize-sensor.git'


git did not exit cleanly (exit code 1) (3838 ms @ 12/04/2017 21:23:11)
Run Code Online (Sandbox Code Playgroud)

我现在应该怎么做 ?

Dan*_*ker 320

远程存储库已配置为禁止您推送会泄露您的个人电子邮件地址的提交.例如,在GitHub中,您已选中阻止命令行推送显示我的电子邮件复选框以启用此功能.

阻止命令行推送暴露我的电子邮件

虽然您当然可以取消选中该设置,但它会将您的私人电子邮件地址公开给世界上的每个人,因为任何有权访问您的存储库的人都可以读取作者信息.

相反,这样做:

  1. 您可以看到您的个人电子邮件地址,默认情况下用于Git中的提交:

    git config --global user.email
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在GitHub的个人设置→电子邮件中找到您的GitHub noreply地址.在" 保持我的电子邮件地址专用"复选框的说明中提到了它.通常,它以唯一标识符和用户名开头:

    {ID}+{username}@users.noreply.github.com
    
    Run Code Online (Sandbox Code Playgroud)

    将我的电子邮件地址保密

  3. 将全局用户电子邮件地址设置更改为您的GitHub noreply地址:

    git config --global user.email {ID}+{username}@users.noreply.github.com
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重置上次提交时的作者信息:

    git commit --amend --reset-author
    
    Run Code Online (Sandbox Code Playgroud)

    如果您的私人电子邮件地址有多个提交,请参阅此答案.

  5. 现在,您可以使用noreply电子邮件地址推送提交,并且将来的提交也将具有noreply电子邮件地址.

    git push
    
    Run Code Online (Sandbox Code Playgroud)

  • 谢谢,猜测我可能在第2步中犯了错误.值得注意的是,你应该明确地遵循@Virtlink的指示,因为设置电子邮件到"<your_uname> @ users.noreply.github.com"以外的其他人(比如我自己设置为"无",这将导致您的个人资料页面上的图表中没有显示您的提交. (4认同)
  • Virtlink提供的第4步对于我越过这个错误至关重要.我在配置中设置了user.email以使用我的无回复电子邮件地址,但Push命令仍然返回了有关发布私人电子邮件的令人沮丧的错误.一旦我修改了我试图推送的提交,它就允许推送. (4认同)
  • 不,它就像我身边的魅力,也许你忘记了一步,@ adamczi.这应该是公认的答案,因为它说明了两种可能的解决方案. (3认同)
  • 我有一个类似的神秘问题.我的错误是`git commit --amend --author",最后是me@users.noreply.github.com",而且似乎并不喜欢这样.您_really_需要完全重置`user.email`配置参数,如上所述.干杯! (3认同)
  • 在github显示我的noreply电子邮件地址之前,我必须取消选择并重新选择"保持我的电子邮件地址私密"选项.见这里:https://help.github.com/articles/about-commit-email-addresses/ (2认同)
  • 您可能只想更改单个存储库的电子邮件地址。这个答案很有帮助,但我还必须参考github的帮助文章:[设置单个存储库的电子邮件地址](https://help.github.com/en/articles/setting-your-commit-email-address在git#设置您的电子邮件地址(用于单个存储库)中 (2认同)

Jor*_*wis 131

这可能是由于新的GitHub设置阻止了暴露您的电子邮件地址的命令行推送.

尝试取消选中电子邮件设置中的"阻止命令行推送我的电子邮件"框,然后再次按下.

  • 取消选中此选项会暴露我的私人电子邮件地址吗? (13认同)
  • 这是一个值得怀疑的解决方案。至少提到这会将您的电子邮件地址暴露给全世界。 (13认同)
  • 是的,这就是它会做什么,但如果您已将提交推送到您的存储库,那么您已经公开了您的电子邮件地址.即使Github不会显示您的电子邮件地址,如果我克隆您的存储库,我可以看到它们是相同的,这就是这个新的防止推送的东西会阻止的. (11认同)

小智 21

您可以使用 3 个选项:

1 . 您可以Keep my email addresses privateGitHub 电子邮件设置中取消选中您的。

2 . 如果您想隐藏存储库的电子邮件,GitHub 在 GitHub 电子邮件设置中提供了 noreply 电子邮件地址

由于您启用了电子邮件隐私,因此将用于帐户相关通知以及密码重置。

34661293+aslancan32@users.noreply.github.com 将用于基于 Web 的 Git 操作,例如编辑和合并。

git config --global user.email "<your-noreply-github-email>"
Run Code Online (Sandbox Code Playgroud)

3-或者您可以使用公共电子邮件或企业电子邮件作为您的存储库。喜欢m****@business.com

git config --global user.email "<your-public-email>"
Run Code Online (Sandbox Code Playgroud)

应用到您的设置后,我建议运行重置标头代码:

git reset --soft HEAD~1 
Run Code Online (Sandbox Code Playgroud)

再次尝试访问push您的存储库


Yuv*_*til 6

  1. Emailsgithub.com 的开放部分。访问https://github.com/settings/emails
  2. 转到Keep my email addresses private部分并记下您的donotreply电子邮件 ID。
  3. 使用以下命令打开git terminal并将您的donotreply电子邮件 ID设置为您的电子邮件 ID:
git config --global user.email "<your_donotreply_email_id"
Run Code Online (Sandbox Code Playgroud)
  1. 恢复您最近的本地提交(使用您的私人电子邮件),这些提交未能推送到存储库中。
git reset --soft HEAD~1 
Run Code Online (Sandbox Code Playgroud)
  1. 暂存并推送这些提交
git add .
git commit –m "<commit_message>"
git push
Run Code Online (Sandbox Code Playgroud)