Git公开暴露我的电子邮件地址吗?

我在Git上读过的指南说,我应该进入configuration并指定我的名字和我的电子邮件地址。 他们没有详细说明。 他们只是说要这样做。

为什么Git需要我的电子邮件地址? 而且,更重要的是,如果我通过GitHub公开提供我的回购,我的电子邮件地址是否可以被所有人(包括垃圾邮件)看到?

Git使用您的电子邮件地址来标识您,以及执行其他任务(例如使用GPG密钥签署标记)。 您的电子邮件地址将作为您的身份的一部分embedded在提交日志等中,以及您指定的名称。 例如,提交日志中的“author”字段将显示为:

Author: Joe White <joewhite@mysite.com> 

所以这些信息对任何有回购副本的人都是可用的,因为它作为一个标识符。

不过,除非使用Gitweb或者像GitHub这样的服务来使您的回购通过Web界面 (仅仅将其放置在互联网上,否则不会),否则您的电子邮件可能不会被垃圾邮件所看到。

我想你可以填写一个虚假的电子邮件地址或使用一个空的string或空间或东西(我不认为Git检查电子邮件的格式或有效性),但是电子邮件是有用的,如果有人克隆回购需要发送你的补丁或以某种方式与你联系。

2017年4月更新

请参阅“ 私人电子邮件,现在更私人 ”

GitHub已经支持使用一个替代的“noreply”电子邮件地址来编写一段时间的基于web的提交。 从今天开始,有另一种方法可以确保在通过命令行向GitHub提交提交时不会无意中发布您的电子邮件地址。

Git使用您的电子邮件地址将您的姓名与您作者的任何提交相关联。 一旦您将提交推送到GitHub上的公共存储库,也会发布作者身份元数据。

如果您希望确保不会意外地发布您的电子邮件地址,只需在您的电子邮件设置中选中“保留我的电子邮件地址为私密”和“阻止显示我的电子邮件的命令行”选项。

assets/33750/24673856/a995cb74-1947-11e7-8653-65bc604a4101.png


注意:从2013年8月9日开始,您现在可以将您的电子邮件地址保密 !

这是基于Web的GitHub操作:提交仍然包含一个电子邮件地址,该地址可能与用于您的GitHub帐户的地址相同,也可能不同。
请参阅下面的“掩盖”(git commit)电子邮件。

直到今天,所有基于Web的GitHub Flow都使用您的主要电子邮件地址。 这包括创build,编辑和删除文件,以及合并拉取请求。

但现在你可以保持你的电子邮件地址私人。 为此,请访问您的电子邮件设置页面:

电子邮件设置

启用此function后,基于Web的操作将使用username@users.noreply.github.com电子邮件地址。


如果您想隐藏您的电脑发出的电子邮件,GitHub现在允许您注册不同的电子邮件地址 :请参阅本指南

如果你想让你的提交反映出来,你还需要在你的本地仓库中configuration你的(假的)电子邮件地址

 git config --global user.email "user@server.fake" # Set email to slightly changed value git config --global user.email # Verify the setting # user@server.fake 

然后:

  • 转到电子邮件设置菜单
  • 点击“添加其他电子邮件地址”
  • input假电子邮件(例如“ user@server.fake ”)并点击“添加”

添加新的电子邮件地址

注意:

此设置仅影响将来的提交
如果您想从存储库的提交历史logging中删除真实的电子邮件地址,则必须重写旧的提交。 最简单的方法是:

使用git filter-branch来重写版本库历史logging,并强制推送新的历史logging。

GitHub有一个名为Keeping your email address private的帮助文章,开头是:

Git要求你确认自己是否提交,但是你可以使用伪造的地址来隐藏你的联系信息。 Git本身并不关心电子邮件是否有效。

有用的信息:尽pipeGit并不关心,但如果您的提交没有有效的电子邮件地址,某些项目可能不会接受您的贡献,因此您需要在遵循这些说明之前研究项目的贡献策略。

GitHub并没有收到很多关于垃圾邮件被发送到Git commit email地址的报告,但是如果你担心的话,本指南应该帮助你解决这些问题。

该指南包含如何configurationGit和GitHub使用伪造地址的步骤。

是的,上面的答案是正确的…除了你想通常有相同的电子邮件地址为您的所有项目,那么你会使用命令:

 git config --global user.email "me@email.com" 

您也可以在用户部分编辑主目录中的.gitconfig文件。

您可以通过执行相同的命令而不使用全局选项来为特定项目指定不同的电子邮件。

另外,我build议如果提交到公共区域,您可以混淆您的电子邮件:

 briancolfer(at)comcast.net 

举个例子。

是的,你的电子邮件地址(如git config user.email指定的)将在GitWeb等Web界面中可见。 另外,每个人都可以通过克隆存储库来了解您的电子邮件地址,尽pipe这可能还远远不止于垃圾邮件。 虽然没有人强迫你使用真实的电子邮件地址。 如果没有给出,Git将自动设置一个构build的电子邮件地址。 在没有user.email机器上显示“Foo <foo @ daughter。(none)>”提交。

您可以追溯更改作者姓名,电子邮件等。请注意,执行以下操作可能会损坏您的历史logging。

 #!/bin/sh git filter-branch --env-filter ' an="$GIT_AUTHOR_NAME" am="$GIT_AUTHOR_EMAIL" cn="$GIT_COMMITTER_NAME" cm="$GIT_COMMITTER_EMAIL" if [ "$GIT_COMMITTER_EMAIL" = "your@email.to.match" ] then cn="Your New Committer Name" cm="Your New Committer Email" fi if [ "$GIT_AUTHOR_EMAIL" = "your@email.to.match" ] then an="Your New Author Name" am="Your New Author Email" fi export GIT_AUTHOR_NAME="$an" export GIT_AUTHOR_EMAIL="$am" export GIT_COMMITTER_NAME="$cn" export GIT_COMMITTER_EMAIL="$cm" ' 

从这里采取

GitHub有关于设置您的电子邮件地址的帮助部分。

具体来说它说:

很高兴知道:您不必提供有效的电子邮件。 如果您担心垃圾邮件,请改用假电子邮件。 user@example.com是一种常见的做法。

成千上万的GitHub提交电子邮件 : https : //github.com/cirosantilli/all-github-commit-emails从GitHub档案提取https://www.githubarchive.org出口提交。;

GitHub存档从GitHub的事件API获取数据: https : //developer.github.com/v3/activity/events/types/#pushevent并每小时将其导出到Google BigQuery,这使得查询更容易。

电子邮件显示在PushEventtypes的事件上。

我不认为提交邮件显示在GitHub的Web界面的任何地方,所以任何收集都受到API速率限制。 TODO:多less时间通过API从头开始收集1M邮件。

使用API​​获取某人提交电子邮件的实用方法

 ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; } ghmail cirosantilli 

或访问: https : //api.github.com/users/cirosantilli/events/public

还有:

  • 应用程序的: https : //github.com/mmautner/github-email-thief
  • 更高级的脚本: https : //github.com/hodgesmr/FindGitHubEmail