Разглашает ли Git мой адрес электронной почты?

96

В руководствах, которые я читал до сих пор по Git, говорится, что я должен войти в конфигурацию и указать свое имя и адрес электронной почты. Они не уточняют; они просто говорят сделать это.

Зачем Git мой адрес электронной почты? И, что более важно, если я сделаю свое репо общедоступным, например, через GitHub, будет ли мой адрес электронной почты виден всем (включая спам-ботов)?

Джо Уайт
источник
19
Я думаю, что это действительный (хотя и не технический) вопрос об инструменте, связанном с программированием - как и многие другие вопросы по SO - и не заслуживает того, чтобы его отвергали как «не связанного с программированием».
Jonik
3
GitHub сейчас (август 2013 г.) позволяет сохранить конфиденциальность вашего адреса электронной почты! Смотрите мой ответ ниже . Вы также можете зарегистрировать поддельный адрес электронной почты, чтобы не использовать его в коммитах, которые вы отправляете на GitHub.
VonC

Ответы:

36

Git использует ваш адрес электронной почты, чтобы идентифицировать вас, а также выполнять другие задачи (например, подписывать тег с помощью ключа GPG). Ваш адрес электронной почты включается как часть вашей личности в журналы фиксации и т. Д. Вместе с указанным вами именем. Например, поле «Автор» в журнале фиксации будет отображаться как:

Author: Joe White <joewhite@mysite.com>

Таким образом, информация доступна любому, у кого есть копия репо, поскольку она действует как идентификатор.

Однако ваша электронная почта, вероятно, не будет видна спам-ботам, если вы не используете Gitweb или такую ​​службу, как GitHub, чтобы сделать свое репо доступным через веб-интерфейс (простое размещение его в Интернете не делает этого).

Я полагаю, вы можете заполнить поддельный адрес электронной почты или использовать пустую строку или пробел или что-то в этом роде (я не думаю, что Git проверяет формат или действительность электронного письма), но электронное письмо полезно, если кому-то, кто клонирует репо, нужно отправить вы патч или свяжитесь с вами каким-либо образом.

мипади
источник
3
Возможно, у github, gitweb и др. Должна быть возможность скрывать адреса электронной почты, как это делают программы просмотра архивов списков рассылки. Хотя это действительный адрес электронной почты - это просто соглашение, такие инструменты, как 'git send-email', написаны с предположением, что это правда (например, автоматически cc'ing авторов патчей)
araqnid
2
Вы можете настроить git для использования другого идентификатора, указанного в user.name и user.email в качестве ключа GPG для подписи тегов
Якуб Наребски,
Старые централизованные системы контроля версий используют «имя пользователя» для идентификации автора фиксации (изменения). Имя + адрес электронной почты - хорошая личность; однако это не обязательно должен быть настоящий адрес электронной почты.
Якуб Наребски,
3
У GitHub есть обновление, в котором вы можете использовать поддельный адрес электронной почты, связанный с вашим профилем - stackoverflow.com/a/20533922/2158473
RyPeck
GitHub может запомнить даже PR-коммиты в удаленной ветке, которые были объединены с помощью rebase (и поэтому не раскрывайте адрес электронной почты / имя где-либо в репо, кроме как на веб-странице PR). Если PR был объединен, я не знаю способа отменить коммиты (если он все еще открыт, вы можете перебазировать и принудительно нажать).
DA
44

Обновление апрель 2017 г.

См. « Частные электронные письма, теперь еще более личные »

GitHub уже некоторое время поддерживает использование альтернативного адреса электронной почты для создания веб-коммитов. Начиная с сегодняшнего дня, есть еще один способ гарантировать, что вы случайно не опубликуете свой адрес электронной почты при отправке коммитов в GitHub через командную строку.

Git использует ваш адрес электронной почты, чтобы связывать ваше имя с любыми вашими коммитами. После того, как вы отправите свои коммиты в публичный репозиторий на GitHub, метаданные об авторстве также будут опубликованы.

Если вы хотите убедиться, что случайно не опубликовали свой адрес электронной почты, просто установите флажки «Сохранить мой адрес электронной почты в секрете» и «Блокировать сообщения командной строки, открывающие мой адрес электронной почты» в настройках электронной почты .

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

Примечание: в качестве комментировал ниже по orev , Git ничего не подвергать. GitHub , служба хостинга репозиториев Git , может.
Место, где вы размещаете свое локальное репозиторий Git, может предоставлять метаданные.


Примечание. Начиная с 9 августа 2013 г., вы можете сохранить конфиденциальность своего адреса электронной почты. !

Это касается операций GitHub через Интернет: коммиты по-прежнему содержат адрес электронной почты, который может быть или не совпадать с тем, который используется для вашей учетной записи GitHub.
См. Ниже, чтобы "замаскировать" это письмо (git commit).

До сегодняшнего дня весь веб-сайт GitHub Flow использовал ваш основной адрес электронной почты. Это включает создание, редактирование и удаление файлов, а также объединение запросов на вытягивание.

Но теперь вы можете сохранить конфиденциальность своего адреса электронной почты. Для этого перейдите на страницу настроек электронной почты:

настройки электронной почты

Если этот параметр включен, веб-операции будут использовать адрес электронной почты 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чтобы переписать историю репозитория и принудительно подтолкнуть новую историю вверх.

VonC
источник
1
Это полезно знать, однако я думаю, должно быть очень ясно, что GitHub - это не то же самое git. git- это универсальный инструмент контроля версий с открытым исходным кодом, а GitHub - это веб-сайт, позволяющий публиковать gitрепозиторий. GitHub не создавал git, они просто создали очень хороший веб-сайт, который хорошо с ним работает.
orev 06
@orev Хорошее замечание. Я включил это предупреждение в ответ.
VonC
10

На GitHub есть справочная статья «Как сохранить конфиденциальность вашего адреса электронной почты» , которая начинается:

Git требует, чтобы вы идентифицировали себя, чтобы совершать коммиты, но вы можете скрыть свою контактную информацию, используя поддельный адрес. Сам Git не заботится о том, действителен ли адрес электронной почты.

Полезно знать: хотя Git это не волнует, некоторые проекты могут не принимать от вас взносы, если у ваших коммитов нет действительного адреса электронной почты, поэтому вы захотите изучить политику участия в своем проекте, прежде чем следовать этим инструкциям.

GitHub не получает много сообщений о спаме, отправленном на адреса электронной почты коммитов Git, но если вас это беспокоит, данное руководство должно помочь вам решить эти проблемы.

Руководство содержит шаги по настройке Git и GitHub для использования поддельного адреса.

Хьюго
источник
Я получаю много спама на свой адрес электронной почты для коммитов GitHub. Я использую для этого специальный.
Митар
6

Да, приведенные выше ответы верны ... за исключением того, что вы обычно хотите иметь один и тот же адрес электронной почты для всех своих проектов, тогда вы должны использовать команду:

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

Вы также можете отредактировать файл .gitconfig в своем домашнем каталоге в пользовательском разделе.

Вы можете указать другой адрес электронной почты для конкретного проекта, выполнив ту же команду без глобального параметра.

Кроме того, я предлагаю вам скрыть свой адрес электронной почты, если отправка отправляется в общедоступную область:

briancolfer(at)comcast.net

Например.

Bcolfer
источник
5

Просочились миллионы писем о коммитах на GitHub

https://github.com/cirosantilli/all-github-commit-emails, извлеченные из архивов GitHub, https://www.githubarchive.org экспорт фиксации.

GitHub Archive получает данные из API событий GitHub: https://developer.github.com/v3/activity/events/types/#pushevent и ежечасно экспортирует их в Google BigQuery, что упрощает выполнение запросов.

Электронные письма отображаются по событиям типа PushEvent.

Я не думаю, что электронные письма с фиксацией отображаются где-либо в веб-интерфейсе GitHub, поэтому любая коллекция ограничена ограничением скорости API. TODO: сколько времени нужно собрать 1 млн писем через API с нуля.

Практический способ получить чье-либо электронное письмо с помощью 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?

Поэтому понятно, что эта информация добавляется в коммиты по умолчанию.

Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
источник
4

Да, ваш адрес электронной почты (указанный в git config user.email) будет отображаться в веб-интерфейсах, таких как GitWeb. Также каждый может узнать ваш адрес электронной почты, клонировав ваш репозиторий, хотя это, вероятно, все еще далеко за пределами спам-ботов. Однако никто не заставляет вас использовать реальный адрес электронной почты. Git автоматически установит сконструированный адрес электронной почты, если он не указан. На моей машине без user.emailнего отображаются коммиты «Foo <foo @aughter. (None)>».

Бомба
источник
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"
'

Взято отсюда

яйцо
источник
4

GitHub имеет раздел справки о настройке адреса электронной почты.

В частности, говорится:

Полезно знать: указывать действующий адрес электронной почты необязательно. Если вас беспокоит спам, используйте поддельный адрес электронной почты. user@example.com - обычная практика.

g_fred
источник