到目前为止,我在Git上阅读的指南都说我应该进入配置并指定我的姓名和电子邮件地址。他们不详细说明;他们只是说要做。
为什么Git需要我的电子邮件地址?而且,更重要的是,如果我通过GitHub公开我的仓库,我的电子邮件地址是否对所有人(包括垃圾邮件浏览者)可见?
到目前为止,我在Git上阅读的指南都说我应该进入配置并指定我的姓名和电子邮件地址。他们不详细说明;他们只是说要做。
为什么Git需要我的电子邮件地址?而且,更重要的是,如果我通过GitHub公开我的仓库,我的电子邮件地址是否对所有人(包括垃圾邮件浏览者)可见?
Answers:
Git使用您的电子邮件地址来识别您的身份,以及执行其他任务(例如使用GPG密钥对标签进行签名)。您的电子邮件地址确实与您指定的名称一起作为身份的一部分嵌入到提交日志等中。例如,提交日志中的“作者”字段将显示为:
Author: Joe White <joewhite@mysite.com>
因此,具有回购副本的任何人都可以使用该信息,因为它充当标识符。
不过,除非您使用Gitweb或GitHub之类的服务来通过Web界面提供您的回购信息,否则垃圾邮件发送者可能不会看到您的电子邮件(仅将其放在Internet上是不会这样做的)。
我想您可以填写一个虚假的电子邮件地址或使用一个空字符串或空格之类的东西(我不认为Git会检查电子邮件的格式或有效性),但是如果克隆回购协议的人需要发送电子邮件,则该电子邮件很有用给您打补丁或以某种方式与您联系。
2017年4月更新
请参阅“ 私人电子邮件,现在更加私人 ”
GitHub支持使用备用“ noreply”电子邮件地址来编写基于Web的提交已有一段时间了。从今天开始,还有另一种方法来确保您在通过命令行将提交推送到GitHub时不会无意间发布您的电子邮件地址。
Git使用您的电子邮件地址将您的姓名与您编写的任何提交相关联。将提交推送到GitHub上的公共存储库后,作者身份元数据也会被发布。
如果您想确保不会意外地发布您的电子邮件地址,只需在电子邮件设置中选中“保持我的电子邮件地址为私人”和“阻止公开我的电子邮件的命令行推送”选项。
注:如评论下面通过OREV,Git的不公开什么。GitHub可能是一个Git存储库托管服务。
您推送本地Git存储库的地方可能会暴露元数据。
注意:从 2013年8月9日开始,您现在可以将电子邮件地址设为不公开!
但是,这是针对基于Web的GitHub操作:提交仍包含一个电子邮件地址,该电子邮件地址可能与用于GitHub帐户的电子邮件地址相同或不同。
参见下文,也“屏蔽”该(git commit)电子邮件。
直到今天,所有基于Web的GitHub Flow都使用您的主要电子邮件地址。这包括创建,编辑和删除文件,以及合并拉取请求。
但是现在您可以将电子邮件地址设为不公开。为此,请访问您的电子邮件设置页面:
启用此功能后,基于Web的操作将使用username@users.noreply.github.com电子邮件地址。
如果您想隐藏计算机上发送的电子邮件,GitHub现在允许您注册其他电子邮件地址:请参阅本指南。
如果您希望您的提交反映出来,您仍然需要在本地仓库中配置(伪)电子邮件,然后再推送回GitHub
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
然后:
user@server.fake
”),然后单击“添加”注意:
此设置仅影响将来的提交。
如果要从存储库的提交历史记录中删除真实的电子邮件地址,则必须重写旧的提交内容。最简单的方法是:使用
git filter-branch
重写历史资料库和强制推新的历史了。
git
。 git
是一个通用的开放源代码版本控制工具,而GitHub是一个允许您发布git
存储库的网站。GitHub没有创建git
,他们恰好创建了一个很好的网站,可以很好地工作。
GitHub上有一个帮助文章,名为保持您的电子邮件地址私密,开始于:
Git要求您标识自己才能进行提交,但是您可以使用假地址隐藏您的联系信息。Git本身并不关心电子邮件是否有效。
提示:尽管Git不在乎,但是如果您的提交没有有效的电子邮件地址,某些项目可能不接受您的捐款,因此您将需要在遵循这些说明之前研究项目的捐款政策。
GitHub并没有很多关于将垃圾邮件发送到Git提交电子邮件地址的报告,但是如果您对此感到担心,则本指南应该可以帮助您解决这些问题。
该指南包含如何配置Git和GitHub以使用假地址的步骤。
数百万GitHub提交电子邮件泄漏
https://github.com/cirosantilli/all-github-commit-emails从GitHub档案提取https://www.githubarchive.org出口承诺。
GitHub Archive从GitHub的事件API获取数据:https : //developer.github.com/v3/activity/events/types/#pushevent每小时将其导出到Google BigQuery,这使查询变得更容易。
电子邮件显示在类型的事件上PushEvent
。
我认为提交电子邮件不会在GitHub的Web界面上的任何位置显示,因此任何收集都受到API速率限制的限制。TODO:从头开始通过API收集100万封电子邮件的时间。
通过API获取某人的提交电子邮件的实用方法
ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; }
ghmail cirosantilli
或访问:https : //api.github.com/users/cirosantilli/events/public
还有:
Git提交数据结构具有一个明确的作者和提交者电子邮件字段
因此,很明显,默认情况下此信息已添加到提交中。
您可以追溯地更改作者姓名,电子邮件等。请注意,执行以下操作可能会破坏您的历史记录。
#!/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"
'
从这里取