到目前为止,我所阅读的有关Git的指南都说我应该进入配置文件并指定我的姓名和电子邮件地址。他们没有详细说明; 他们只是让我这样做。
Git为什么需要我的电子邮件地址?更重要的是,如果我通过GitHub等方式将我的存储库公开可用,我的电子邮件地址是否会对所有人(包括垃圾邮件机器人)可见?
到目前为止,我所阅读的有关Git的指南都说我应该进入配置文件并指定我的姓名和电子邮件地址。他们没有详细说明; 他们只是让我这样做。
Git为什么需要我的电子邮件地址?更重要的是,如果我通过GitHub等方式将我的存储库公开可用,我的电子邮件地址是否会对所有人(包括垃圾邮件机器人)可见?
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
,他们只是恰好创建了一个与之配合得很好的优秀网站。 - orevGit使用您的电子邮件地址来识别您,以及执行其他任务(例如使用GPG密钥签署标签)。您的电子邮件地址会与您指定的名称一起嵌入提交日志等中作为您身份的一部分。例如,在提交日志中,“作者”字段将显示为:
Author: Joe White <joewhite@mysite.com>
因此,只要拥有存储库的副本,任何人都可以访问这些信息,因为它充当标识符。
但是,除非您使用Gitweb或像GitHub这样的服务通过Web界面使您的存储库可用(仅将其放在Internet上不会实现此操作),否则您的电子邮件可能不会对垃圾邮件机器人可见。
我想,您可以填写虚假的电子邮件地址或使用空字符串或空格之类的内容(我不认为Git检查电子邮件的格式或有效性),但是如果克隆存储库的某个人需要发送补丁或以某种方式联系您,则电子邮件很有用。
GitHub有一篇名为保护您的电子邮件地址隐私的帮助文章,其开头如下:
Git要求您在提交更改时进行身份验证,但您可以使用虚假地址隐藏您的联系信息。Git本身无法确定电子邮件是否有效。
值得知道:尽管Git并不关心这一点,但有些项目可能不接受您的贡献,如果您的提交没有有效的电子邮件地址,因此在按照这些说明之前,您需要研究项目的贡献政策。
GitHub很少收到针对Git提交电子邮件地址的垃圾邮件投诉,但如果您担心此问题,本指南应该能帮助您解决这些问题。
本指南包含如何配置Git和GitHub以使用虚假地址的步骤。
数百万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,这使查询变得更加容易。
在PushEvent
类型的事件中曾经显示电子邮件,但在我执行此操作后停止了。
我认为提交电子邮件不会在GitHub的Web界面上显示(除非您在GitHub配置文件中设置了电子邮件,2022年之后仅对已登录用户显示),因此任何收集都受API速率限制。待办事项:通过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
还有:
Git提交数据结构具有显式的作者和提交者电子邮件字段
因此,很明显这些信息会被默认添加到提交中。
是的,以上回答是正确的……除非你想让所有项目通常使用相同的电子邮件地址,那么你将使用以下命令:
git config --global user.email "me@email.com"
您还可以在用户部分中的主目录中编辑.gitconfig文件。
如果不使用全局选项,可以通过执行相同命令来为特定项目指定不同的电子邮件地址。
此外,我建议您在提交到公共区域时混淆您的电子邮件地址:
briancolfer(at)comcast.net
您可以追溯更改作者名称、电子邮件等信息。请注意,以下操作可能会损坏您的历史记录。
#!/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是一种常见做法。
是的,您在 git config user.email
中指定的电子邮件地址将在像 GitWeb 这样的 Web 接口中可见。此外,每个人都可以通过克隆您的存储库来了解您的电子邮件地址,但这可能仍然远远超出了垃圾邮件机器人的能力范围。不过,没有人强迫您使用真实的电子邮件地址。如果未提供电子邮件地址,Git 将自动设置构造的电子邮件地址。在我的机器上,没有 user.email
,它显示“Foo <foo@daughter.(none)>”的提交。
查看 提交记录 0996dd3 (2021年3月28日),提交人为 Georgios Kontaxis (kontaxis
)。
(已合并至 提交记录 a9414b8,合并者为 Junio C Hamano -- gitster
--,2021年4月13日)
Gitweb从Git日志中提取内容,并通过HTTP进行访问。因此,在提交中发现的电子邮件地址暴露给网络爬虫,它们可能不尊重robots.txt。这可能导致收到未经请求的消息。
gitweb
: 添加“电子邮件隐私”功能以遮盖电子邮件地址签名:Georgios Kontaxis
认可:Eric Wong
认可:Ævar Arnfjörð Bjarmason
email-privacy
从生成的HTML等内容中删除电子邮件地址。这样可以遮盖从Git日志的作者/提交者和注释部分检索到的电子邮件地址。
它旨在阻止收集和滥用地址的网络爬虫。这些爬虫可能不尊重robots.txt
。
请注意,用户和用户工具也会将地址作为省略处理。如果Gitweb不是工作流程的最后一步,则后续步骤可能会因接收到的省略信息而出现问题。
默认情况下禁用。