有没有解决方案可以使用 Github 提供的 noreply 电子邮件进行 git push,而不用取消“阻止命令行推送暴露我的电子邮件”?

5
如果我运行命令git config --global user.email,我会得到:16969914+jamesray1@users.noreply.github.com。 然后,如果我在Github的电子邮件设置中勾选“阻止命令行推送”,并运行命令git push,则无法正常工作,输出会显示error: GH007: Your push would publish a private email address.。如果我尝试将此电子邮件地址添加到Github,则会收到错误提示信息。如果不勾选“阻止命令行推送”,则git push可以正常工作。 我已经阅读了这些文章: - https://help.github.com/articles/setting-your-commit-email-address-in-git/ - https://help.github.com/articles/about-commit-email-addresses/ - https://help.github.com/articles/setting-your-commit-email-address-on-github/ 我已向Github支持发送了消息,但如果有人有任何想法,请随时回答。

也许您在存储库中设置了不同的电子邮件?当您只输入 git config user.email 时,它会显示什么? - Klas Mellbourn
嗨Klas,不是不同的电子邮件地址,git config user.email确认了。但问题现在已经按照@max630的答案解决了。 - James Ray
1个回答

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}..

假设您不想更改您的名称,只是要更改电子邮件。 我相信选择器@{u}..应该只选择那些您将要推送的提交。

2
嗨@max630,是的,我用我的真实电子邮件进行了第一次推动,导致了类似的输出,通知使用真实电子邮件进行推动已被阻止。感谢您的命令,它有效了!只是为了提醒其他可能遇到相同问题的人,您需要将REAL_EMAIL更改为您的私人电子邮件,将PROXY_EMAIL更改为您的Github提供的电子邮件。否则,该命令无需进一步修改。 - James Ray
很不幸,我又遇到了这个错误。即使 git config --global user.email 返回 16969914+jamesray1@users.noreply.github.com,但 git log 对于每个提交都有我的私人电子邮件。运行以下命令返回 Found nothing to rewrite`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}..` - James Ray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接