是否有使用 Github 提供的 noreply 电子邮件进行 git Push 的解决方法,而不取消勾选“阻止暴露我的电子邮件的命令行推送”?

Jam*_*Ray 5 git email github

如果我运行git config --global user.email我会得到: 16969914+jamesray1@users.noreply.github.com

然后,如果我git push在 Github 电子邮件设置中勾选“阻止暴露我的电子邮件的命令行推送”来运行,它就不起作用,并 error: GH007: Your push would publish a private email address. 在输出中显示。我无法将此电子邮件地址添加到 Github,因为它已经添加了(如果我尝试,我会收到一条错误通知)。如果我取消选中“阻止暴露我的电子邮件的命令行推送”,那么就git push可以了。我读过这些文章:

我向 Github 支持发送了一条消息,但如果有人有任何想法,请随时回答。

max*_*630 5

我怀疑在您更改设置之前,您已经做出了提及您真实电子邮件的提交。您现在应该修改本地提交,以便它们使用 github 的代理电子邮件

基于这个答案,它会像(我没有测试它!):

$ git filter-branch --commit-filter '
      if [ "$GIT_AUTHOR_EMAIL" = "REAL_EMAIL" ];
       then GIT_AUTHOR_EMAIL="PROXY_EMAIL";
      fi;
      if [ "$GIT_COMMITTER_EMAIL" = "REAL_EMAIL" ];
       then GIT_COMMITTER_EMAIL="PROXY_EMAIL";
      fi; 
      git commit-tree "$@" '  -- @{u}..
Run Code Online (Sandbox Code Playgroud)

这假设您不想更改姓名,只想更改电子邮件。我认为选择器@{u}..应该准确选择您要推送的提交。

  • 你好@max630,是的,我用我的真实电子邮件进行了第一次推送,这导致了类似的输出,通知用我的真实电子邮件进行推送被阻止。感谢您的命令,成功了!只是向可能遇到同样问题的其他人指出,您需要将 REAL_EMAIL 更改为您的私人电子邮件,并将 PROXY_EMAIL 更改为您的 Github 提供的电子邮件。否则,该命令不需要进一步修改。 (2认同)