【问题标题】:Meaning of the GitHub message: push declined due to email privacy restrictionsGitHub消息的含义:由于电子邮件隐私限制,推送被拒绝
【发布时间】:2017-09-08 17:41:54
【问题描述】:

我已经在 GitHub 上接受并合并了一个拉取请求,现在我无法再拉取我的提交了。

消息是:

! [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)

我现在该怎么办?

【问题讨论】:

标签: git github git-push privacy-policy


【解决方案1】:

这可能是由 new GitHub setting 阻止了暴露您的电子邮件地址的命令行推送引起的。

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

【讨论】:

  • 取消选中此选项会暴露我的私人电子邮件地址吗?
  • 是的,这就是它的作用,但是如果您将提交推送到您的存储库,您已经暴露了您的电子邮件地址。尽管 Github 不会显示您的电子邮件地址,但如果我克隆您的存储库,我可以看到它们是一样的,这就是这个新的 prevent-push 东西将阻止的。
  • 这是一个有问题的解决方案。至少要提一下,这会将您的电子邮件地址暴露给全世界。
  • Daniel A.A. Pelsmaeker'sWinfried's 是更好的答案。
【解决方案2】:

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

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

相反,这样做:

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

    git config --global user.email
    
  2. 在您的 GitHub 的 Personal Settings → Emails 中找到您的 GitHub noreply address将我的电子邮件地址保密复选框的描述中提到了这一点。通常,它以唯一标识符开头,加上您的用户名:

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

  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
    

【讨论】:

  • 不,它对我来说就像一个魅力,也许你忘了一步,@adamczi。这应该是公认的答案,因为它说明了两种可能的解决方案。
  • 谢谢,我猜我可能在第 2 步中犯了一个错误。值得注意的是,您应该明确地按照@Virtlink 的说明进行操作,因为将电子邮件设置为<your_uname>@users.noreply.github.com 以外的地址(比如我自己)设置为 None) 将导致不会在您的个人资料页面的图表中显示您的提交。
  • 我也遇到过类似的神秘问题。我的错误是git commit --amend --author "first last me@users.noreply.github.com",它似乎不喜欢那样。您真的需要完全按照上述方式重置user.email 配置参数。干杯!
  • Virtlink 上面提供的第 4 步对于我克服此错误至关重要。我已将配置中的 user.email 设置为使用我的无回复电子邮件地址,但 Push 命令仍然返回有关发布私人电子邮件的令人沮丧的错误。一旦我修改了我试图推送的提交,它就会允许推送。
  • 您可能只想更改单个存储库的电子邮件地址。这个答案很有帮助,但我也不得不参考github的帮助文章:Setting your email address for a single repository
【解决方案3】:
  1. 只需访问 github.com 并点击您的个人资料
  2. 进入设置
  3. 现在点击左侧导航面板上的“电子邮件”
  4. 然后搜索“将我的电子邮件地址保密”字段
  5. 请取消选中此选项
  6. 现在请再次检查,我认为您的问题现在已经解决了。

【讨论】:

  • 这会起作用,但会暴露您的私人电子邮件地址。如果您担心隐私问题,请查看其他解决方案。
【解决方案4】:

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

git config --global user.email ""

这只是将我的电子邮件设置为空白(一个空字符串)。我现在在个别项目中设置我的电子邮件:

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:
      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
      

      【讨论】:

      • 感谢这对我有用 - 完成第 4 步后
      【解决方案7】:

      您可以使用 3 个选项:

      1。您可以在 GitHub E-mail Settings 中取消选中您的 Keep my email addresses private

      2。如果你想隐藏你的仓库的电子邮件,GitHub 在 GitHub 电子邮件设置中提供一个 noreply 电子邮件地址

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

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

      git config --global user.email "<your-noreply-github-email>"
      

      3- 或者,您可以将公共电子邮件或企业电子邮件用于您的存储库。赞m****@business.com

      git config --global user.email "<your-public-email>"
      

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

      git reset --soft HEAD~1 
      

      再次尝试push您的存储库

      【讨论】:

        猜你喜欢
        • 2016-05-01
        • 2018-05-05
        • 2011-12-24
        • 1970-01-01
        • 2020-10-04
        • 2021-11-14
        • 2012-10-08
        相关资源
        最近更新 更多