到目前为止我在Git上阅读的指南说我应该进入配置并指定我的姓名和电子邮件地址。他们没有详细说明;他们只是说这样做。
为什么Git需要我的电子邮件地址?而且,更重要的是,如果我通过GitHub公开我的回购,我的电子邮件地址是否会被所有人(包括垃圾邮件程序员)看到?
答案 0 :(得分:34)
2017年4月更新
请参阅" Private emails, now more private"
GitHub支持使用替代" noreply"电子邮件地址,以创建基于Web的提交一段时间了。从今天开始,还有另一种方法可以确保您在通过命令行提交GitHub时无意中发布您的电子邮件地址。
Git使用您的电子邮件地址将您的姓名与您创作的任何提交相关联。将提交推送到GitHub上的公共存储库后,也会发布作者元数据。
如果您希望确保不会意外地发布您的电子邮件地址,只需查看"保持我的电子邮件地址为私人"和"阻止命令行推送我的电子邮件" email settings中的选项。
注意:commented below orev为Git,GitHub不会曝光任何内容。 August, 9th 2013, you now can keep your email address private,Git存储库托管服务,可能 您推送本地Git仓库的位置可能会暴露元数据。
注意:开始this guide!
这适用于基于Web的GitHub操作:提交仍然包含一个电子邮件地址,该地址可能与用于GitHub帐户的电子邮件地址相同或不同。
见下文" mask"那个(git commit)也是电子邮件。
直到今天,所有基于网络的GitHub Flow都使用了您的主电子邮件地址。这包括创建,编辑和删除文件,以及合并拉取请求。
但现在您可以将您的电子邮件地址保密。为此,请访问您的电子邮件设置页面:
启用此功能后,基于网络的操作将使用username@users.noreply.github.com电子邮件地址。
如果您想隐藏自己的计算机电子邮件,GitHub现在允许您注册不同的电子邮件地址:请参阅 git filter-branch
to rewrite the repository history 。
如果你想让你的提交反映出来,你还需要在回到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
")并点击"添加"
请注意:
此设置仅影响将来的提交 如果要从存储库的提交历史记录中删除真实的电子邮件地址,则必须重写旧的提交。最简单的方法是:
使用{{3}}并强制推送新历史记录。
答案 1 :(得分:33)
Git使用您的电子邮件地址来识别您的身份,以及执行其他任务(例如使用GPG密钥签名)。您的电子邮件地址确实作为身份的一部分嵌入到提交日志等中,以及您指定的名称。例如,提交日志中的“author”字段将显示为:
Author: Joe White <joewhite@mysite.com>
因此,任何拥有回购副本的人都可以获得该信息,因为它充当了标识符。
但是,除非您使用Gitweb或GitHub等服务通过网络界面(仅将其放在互联网上),否则您的电子邮件可能无法显示在垃圾邮件中不这样做。)
我想你可以填写一个虚假的电子邮件地址或使用空字符串或空格或其他东西(我不认为Git会检查电子邮件的格式或有效性),但是如果有人克隆了回购邮件,那么该电子邮件很有用需要发送补丁或以某种方式与您联系。
答案 2 :(得分:10)
GitHub有一篇名为Keeping your email address private的帮助文章,开头:
Git要求您识别自己以进行提交,但您可以使用虚假地址隐藏您的联系信息。 Git本身并不关心电子邮件是否有效。
很高兴知道:虽然Git不关心,但如果您的提交没有有效的电子邮件地址,某些项目可能不会接受您的贡献,因此您需要在遵循这些说明之前研究项目的贡献政策。
GitHub没有收到很多关于垃圾邮件发送到Git提交电子邮件地址的报告,但如果您对此感到担心,本指南应该可以帮助您解决这些问题。
该指南包含如何配置Git和GitHub以使用虚假地址的步骤。
答案 3 :(得分:6)
是的,上面的答案是正确的...除了你想要通常为你的所有项目都有相同的电子邮件地址,然后你会使用命令:
git config --global user.email "me@email.com"
您还可以在用户部分的主目录中编辑.gitconfig文件。
您可以通过执行不带全局选项的相同命令为特定项目指定其他电子邮件。
此外,如果提交的内容要到公共区域,我建议您可以对您的电子邮件进行模糊处理:
briancolfer(at)comcast.net
作为一个例子。
答案 4 :(得分:4)
是的,您的电子邮件地址(在git config user.email
中指定)将在GitWeb等网络界面中显示。此外,每个人都可以通过克隆您的存储库来了解您的电子邮件地址,尽管这可能还远远超出了垃圾邮件程序。但是,没有人会强迫您使用真实的电子邮件地址。如果没有给出,Git将自动设置构造的电子邮件地址。在没有user.email
的机器上,它显示“Foo&lt; foo @ daughter。(none)&gt;”提交。
答案 5 :(得分:4)
您可以追溯更改作者姓名,电子邮件等。请注意,执行以下操作可能会损坏您的历史记录。
#!/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"
'
取自here
答案 6 :(得分:4)
GitHub有一个关于setting your email address.
的帮助部分具体说:
相关提示:您无需提供有效的电子邮件。如果您担心垃圾邮件,请使用虚假电子邮件。 user@example.com是一种常见做法。
答案 7 :(得分:4)
从GitHub Archives https://github.com/cirosantilli/all-github-commit-emails export commit提取的数百万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收集1M电子邮件的时间。
通过API获取某人提交电子邮件的实用方法
ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; }
ghmail cirosantilli
或访问:https://api.github.com/users/cirosantilli/events/public
还有:
答案 8 :(得分:0)
如果我公开我的存储库,例如通过 GitHub,我的电子邮件地址是否对所有人可见
注意:您还可以通过本地 gitweb(Git 存储库的 Web 前端,与常规 Git 发行版一起打包,并且可以是 installed with git instaweb
)。
在 Git 2.32(2021 年第 2 季度)中,“gitweb
”学习了“电子邮件隐私”功能,可以对在各个页面上看起来像电子邮件地址的字符串进行编辑。>
请参阅 commit 0996dd3 的 Georgios Kontaxis (kontaxis
)(2021 年 3 月 28 日)。
(2021 年 4 月 13 日在 Junio C Hamano -- gitster
-- 被 commit a9414b8 合并)
gitweb
:添加“电子邮件隐私”功能以编辑电子邮件地址签字人:Georgios Kontaxis
确认:Eric Wong
确认:Ævar Arnfjörð Bjarmason
Gitweb 从 Git 日志中提取内容并使其可通过 HTTP 访问。
因此,提交中找到的电子邮件地址会暴露给网络爬虫,它们可能不尊重 robots.txt
。
这可能会导致不请自来的消息。
引入“电子邮件隐私”功能,从生成的 HTML 内容中删除电子邮件地址。
具体来说,是从 Git 日志的作者/提交者和评论部分检索到的模糊地址。
该功能默认关闭。
此功能不会阻止某人下载未编辑的提交日志,例如,通过克隆存储库并从中提取信息。
它旨在阻止网络爬虫对电子邮件地址的低效率、批量收集。
gitweb.conf
现在包含在其 man page 中:
email-privacy
从生成的 HTML 等内容中编辑电子邮件地址。
这会掩盖从作者/提交者处检索到的电子邮件地址
和 Git 日志的注释部分。
它旨在阻止收集和滥用地址的网络爬虫。
此类爬虫可能不尊重robots.txt
。
请注意,用户和用户工具也会将地址视为已编辑。
如果 Gitweb 不是工作流的最后一步,则后续步骤
可能会因为他们收到的编辑信息而行为不端。
默认禁用。