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

时间:2017-04-12 19:28:07

标签: 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)

我现在该怎么办?

7 个答案:

答案 0 :(得分:262)

远程存储库已配置为禁止您推送会泄露您的个人电子邮件地址的提交。例如,在GitHub中,您已将Block command line pushes that expose my email复选框选中enable this

Block command line pushes that expose my email

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

相反,这样做:

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

    git config --global user.email
    
  2. 在您的GitHub GitHub noreply address中找到您的Personal Settings → Emails。它在保持我的电子邮件地址隐私复选框的说明中提到。通常,它以唯一标识符和用户名开头:

    {ID}+{username}@users.noreply.github.com
    

    Keep my email address private

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

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

    git commit --amend --reset-author
    

    如果您的私人电子邮件地址有多次提交,请参阅this answer

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

    git push
    

答案 1 :(得分:97)

这可能是因为new GitHub setting会阻止公开您的电子邮件地址的命令行推送。

尝试取消选中email settings中的“阻止命令行推送我的电子邮件”复选框,然后重新推送。

答案 2 :(得分:3)

  1. 打开 github.com 的 Emails 部分。访问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"
  1. 恢复您最近的本地提交(使用您的私人电子邮件),这些提交未能推送到存储库中。
git reset --soft HEAD~1 
  1. 暂存并推送这些提交
git add .
git commit –m "<commit_message>"
git push

答案 3 :(得分:1)

  1. 只需转到github.com并单击您的个人资料
  2. 转到设置
  3. 现在单击左侧导航面板上的“电子邮件”
  4. 然后搜索“将我的电子邮件地址设为不公开”字段
  5. 请取消选中此选项
  6. 现在请再次检查,我认为您的问题现在已经解决。

答案 4 :(得分:1)

我通过以下方法解决了错误:

git config --global user.email ""

这只是将我的电子邮件设置为空白(空字符串)。现在,我将电子邮件设置为以下项目:

git config user.email "myemail@domain.com"

答案 5 :(得分:0)

取消选中阻止命令行推送我的电子邮件,然后尝试从命令行推送代码。

答案 6 :(得分:0)

使用Github Desktop解决了我的问题。