您的推送会发布私人电子邮件地址错误

use*_*060 75 git github

我对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'
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了错误信息,没有点击.我也搜索过stackexchange,但没有雪茄.关于如何解决这个问题的任何想法?

Win*_*ied 153

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

  1. 开放式终端.

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

  3. 在GitHub的个人设置→电子邮件中找到您的GitHub noreply地址.在" 保持我的电子邮件地址专用"复选框的说明中提到了它.通常,它以唯一标识符和用户名开头.

  4. 在Git中设置一个电子邮件地址.使用您的GitHub提供的无回复电子邮件地址.

  5. 重置上次提交时的作者信息:

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

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

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

    git push
    
    Run Code Online (Sandbox Code Playgroud)

配置Git后,提交将使用您的备用"noreply"电子邮件地址,任何不会被拒绝的推送.

  • 这应该是公认的答案.@sofia-fernandez答案可以公开电子邮件地址.有什么办法可以让它更简短,更具可读性吗?你有两个主要部分,唯一的区别是`--global`标志 (20认同)
  • 我认为 `git commit --amend --reset-author --no-edit` 稍微快一点,因为它不会要求您编辑提交消息。 (5认同)
  • 完成,谢谢你的建议! (3认同)
  • 这应该是答案。特别是如果您还没有执行“git commit --amend --reset-author”并且只是通过编辑 .git/config 等修改了电子邮件,您可能仍然会收到此错误。不要忘记`git commit --amend --reset-author` (3认同)

小智 55

我也经历过相同的error: GH007消息,并使用以下方法解决问题.

  1. 转到https://help.github.com/articles/setting-your-email-in-git/.
  2. 按照为计算机上的每个存储库设置电子邮件地址.
  3. 打开您的GitHub帐户,然后转到设置 > 电子邮件.
  4. 选中保留我的电子邮件地址专用复选框.
  5. 取消选中阻止命令行推送显示我的电子邮件复选框.

这可能会暴露您的电子邮件地址.

  • 这是一个解决方案,但实际上可能会公开您的电子邮 如果你有任何尚未推送的提交,你需要取消选中**阻止命令行推送暴露我的电子邮件.**然后你可以推送那些挂起的提交.然后,将您的电子邮件地址更新为无回复电子邮件地址,并选中**阻止命令行推送再次公开我的电子邮件**以保持您的地址私密. (20认同)
  • 要更改最新提交的电子邮件,请使用`git commit --amend --author ="作者姓名<email@address.com>" (11认同)
  • 使用@Winfried的解决方案[这里](/sf/answers/3576797311/)要好得多.不会公开公开您的电子邮件地址 (7认同)
  • 同意,正确的答案是@ Winfried的/sf/answers/3576797311/. (7认同)
  • @SvenAelterman`将您的电子邮件地址更新为无回复电子邮件地址` 在github设置或本地机器上某处可能发送/使用您的私人电子邮件地址?这让我感到违反直觉,我可能应该将github生成的电子邮件地址直接复制并发送回github而不是单击复选框,因此我认为阅读不正确.还是?? (5认同)

Yuv*_*til 8

  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"
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)


Ram*_* PP 6

有一个解决方案,无需公开您的电子邮件。发生该错误是因为您在 中配置了自己的电子邮件地址git config --(global|system|local) user.email

如果同一电子邮件是您的 Github 电子邮件,并且您选择了将电子邮件设为私有的选项,则 git 会标记此错误。

有用的是,Github 为您提供了一个无回复电子邮件地址,您可以使用它来执行命令行操作。只需检查您的Github 个人资料上的电子邮件设置即可。

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

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

现在,当您尝试将更改推送到远程存储库时,错误应该消失了。