错误“您的推送将发布私人电子邮件地址”;

我对GitHub/风投公司很陌生。

当我尝试在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,但一无所获。我该如何解决这个问题?

85807 次浏览

你可能已经启用(或现在默认启用)GitHub的电子邮件隐私功能。

它在这个页面在GitHub帮助上有详细说明。

简而言之,您可以启用一个切换(在您的帐户上启用),以防止任何推送,其中用户是您的实际电子邮件地址。您可以使用匿名地址代替(或选择禁用该功能)。

这两个选项的详细信息可在同一页

我也遇到了相同的error: GH007消息,并使用以下方法来解决这个问题。

  1. 设置提交邮箱地址 . .
  2. 遵循为计算机上的每个存储库设置电子邮件地址
  3. 打开你的GitHub账户,进入设置电子邮件
  4. 选中把我的电子邮件地址保密复选框。
  5. 取消选中阻止命令行推送暴露我的电子邮件复选框。

这可能会暴露你的电子邮件地址。

我也有同样的问题。我的解决方案如下图所示:

GitHub Settings

当启用“阻止命令行推送暴露我的电子邮件”功能时,您还需要配置Git以使用您的无回复电子邮件地址。别担心——这不会影响你的贡献图。所有提交仍将与您的帐户相关联。

  1. 打开终端。

  2. 将当前工作目录更改为您想要配置与Git提交关联的电子邮件地址的本地存储库。

  3. 在你的GitHub的个人设置→电子邮件。在将我的电子邮件地址保密复选框的描述中提到过。通常,它以唯一标识符开始,加上您的用户名。

  4. 在Git中设置邮箱地址。使用github提供的无回复电子邮件地址。

    • 为计算机上的每一个存储库设置电子邮件地址

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • Setting your email address for a single repository

      git config user.email "{ID}+{username}@users.noreply.github.com"
      
  5. Reset the author information on your last commit:

    git commit --amend --reset-author
    

    如果你的私人电子邮件地址有多次提交,请参见这个答案

  6. 现在你可以使用无回复的电子邮件地址推送提交,以后的提交也将使用无回复的电子邮件地址。

    git push
    

Once you configure Git, commits will use your alternate “noreply” email address, and any pushes that don’t will be rejected.

  1. 打开github.com的电子邮件部分。访问https://github.com/settings/emails

  2. 进入Keep my email addresses private部分,记下你的donotreply电子邮件id。

  3. 打开git终端,使用以下命令设置你的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

有一个解决方案,w/o暴露你的电子邮件。错误发生是因为您在git config --(global|system|local) user.email中配置了自己的电子邮件地址。

如果相同的电子邮件是你的Github电子邮件,你已经选择了使你的电子邮件私有的选项,这个错误会被git标记。

有帮助的是,Github为你提供了一个无人回复电邮地址,你可以使用命令行操作。只要在你的Github概要文件。上检查你的电子邮件设置

您可以简单地删除或撤销使用user.name完成的提交,在再次提交更改之前,设置另一个电子邮件为

git config --(global|system|local) user.email "<no-reply-email-here>"

现在,当您尝试将更改推到远程回购时,错误应该消失了。

我也遇到了同样的问题,我不能在上次提交时重置作者信息(正如这里所建议的)。相反,我删除了.并再次执行git init,因此不再需要提交更改。