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

Joe*_*ite 83 git privacy

我到目前为止在Git上阅读的指南说我应该进入配置并指定我的姓名和电子邮件地址.他们没有详细说明; 他们只是说这样做.

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

Von*_*onC 37

2017年4月更新

请参阅" 私人电子邮件,现在更私密 "

GitHub已经支持使用备用的"noreply"电子邮件地址来创建基于Web的提交一段时间了.从今天开始,还有另一种方法可以确保您在通过命令行向GitHub提交提交时不会无意中发布您的电子邮件地址.

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

如果您希望确保不会意外地发布您的电子邮件地址,只需在电子邮件设置中选中"保持我的电子邮件地址私密"和"阻止命令行推送我的电子邮件"选项.

https://cloud.githubusercontent.com/assets/33750/24673856/a995cb74-1947-11e7-8653-65bc604a4101.png

注意:如下面orev 评论,Git不会暴露任何内容.Git存储库托管服务GitHub可能会. 您推送本地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
Run Code Online (Sandbox Code Playgroud)

然后:

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

添加新的电子邮件地址

注意:

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

使用git filter-branch重写历史资料库和强制推新的历史了.

  • 知道这一点很有用,但是我认为应该很清楚 **GitHub** 与 `git` 不同。`git` 是一个通用的、开源的、版本控制工具,而 GitHub 是一个允许你发布 `git` 存储库的网站。GitHub 没有创建 `git`,他们只是碰巧创建了一个非常好的网站,可以很好地使用它。 (2认同)

mip*_*adi 33

Git使用您的电子邮件地址来识别您的身份,以及执行其他任务(例如使用GPG密钥签名).您的电子邮件地址确实作为身份的一部分嵌入到提交日志等中,以及您指定的名称.例如,提交日志中的"author"字段将显示为:

Author: Joe White <joewhite@mysite.com>
Run Code Online (Sandbox Code Playgroud)

因此,任何拥有回购副本的人都可以获得该信息,因为它充当了标识符.

但是,除非您使用Gitweb或GitHub之类的服务通过网络界面提供您的仓库(仅将其放在互联网上不会这样做),否则垃圾邮件可能无法看到您的电子邮件.

我想你可以填写一个虚假的电子邮件地址或使用空字符串或空格或其他东西(我不认为Git检查电子邮件的格式或有效性),但如果克隆回购的人需要发送电子邮件,那么该电子邮件很有用你补丁或以某种方式联系你.

  • 可以说github,gitweb等应该有一个模糊电子邮件地址的选项,就像邮件列表存档查看器一样.虽然它是一个有效的电子邮件地址只是一个惯例,但像'git send-email'这样的工具是在假设它是真的的情况下编写的(例如,自动抄送补丁作者) (3认同)
  • GitHub有一个更新,您可以使用链接到您的个人资料的假电子邮件地址 - http://stackoverflow.com/a/20533922/2158473 (3认同)
  • 您可以将git配置为使用user.name和user.email为GPG密钥指定标记的其他标识 (2认同)

Hug*_*ugo 10

GitHub有一篇名为" 保持您的电子邮件地址私密"的帮助文章,它开头:

Git要求您标识自己以进行提交,但您可以使用虚假地址隐藏您的联系信息.Git本身并不关心电子邮件是否有效.

很高兴知道:虽然Git不关心,但如果您的提交没有有效的电子邮件地址,某些项目可能不会接受您的贡献,因此您需要在遵循这些说明之前研究项目的贡献政策.

GitHub没有收到很多关于垃圾邮件发送到Git提交电子邮件地址的报告,但如果您对此感到担心,本指南应该可以帮助您解决这些问题.

该指南包含如何配置Git和GitHub以使用虚假地址的步骤.


Cir*_*四事件 7

数百万 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
Run Code Online (Sandbox Code Playgroud)

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

还有:

Git 提交数据结构具有明确的作者和提交者电子邮件字段

显示在:git commit 对象数据结构的文件格式是什么?

因此很明显,这些信息默认添加到提交中。


bco*_*fer 6

是的,上面的答案是正确的......除了你想要通常为你的所有项目都有相同的电子邮件地址,然后你会使用命令:

git config --global user.email "me@email.com"
Run Code Online (Sandbox Code Playgroud)

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

您可以通过执行不带全局选项的相同命令为特定项目指定其他电子邮件.

此外,如果提交的内容是公共区域,我建议您可以对您的电子邮件进行模糊处理:

briancolfer(at)comcast.net
Run Code Online (Sandbox Code Playgroud)

举个例子.


egg*_*egs 5

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

#!/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"
'
Run Code Online (Sandbox Code Playgroud)

取自这里


g_f*_*red 5

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

具体说:

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