Чи публічно Git викриває мою електронну адресу?


96

У посібниках, які я досі читав на Git, сказано, що я повинен зайти в конфігурацію і вказати своє ім'я та свою електронну адресу. Вони не розробляють; вони просто кажуть робити це.

Навіщо Git потрібна моя електронна адреса? І, що ще важливіше, якщо я зроблю своє репо загальнодоступним, наприклад, через GitHub, чи буде моя електронна адреса видимою для всіх (включаючи спам-ботів)?


19
Я думаю, що це слушне (хоча і нетехнічне) питання про інструмент, пов'язаний з програмуванням - як і безліч інших питань щодо SO -, і не заслуговує на те, щоб його проголосували як "не пов'язаний з програмуванням".
Джонік

3
GitHub зараз (серпень 2013 р.) Дозволяє зберегти вашу адресу електронної пошти приватною! Дивіться мою відповідь нижче . Ви також можете зареєструвати фальшиву електронну адресу, щоб не використовувати її в комітах, які ви надсилаєте на GitHub.
VonC

Відповіді:


36

Git використовує вашу електронну адресу, щоб ідентифікувати вас, а також виконувати інші завдання (наприклад, підписувати тег ключем GPG). Ваша електронна адреса вбудовується як частина вашої ідентифікації в журнали комітів тощо, разом із вказаним вами ім'ям. Наприклад, поле "автор" у журналі комітів відображатиметься як:

Author: Joe White <joewhite@mysite.com>

Отже, інформація доступна кожному, хто має копію репо, оскільки вона виконує роль ідентифікатора.

Ваша електронна пошта, ймовірно, не буде видимою спам-ботам, однак, якщо ви не використовуєте Gitweb або таку службу, як GitHub, щоб зробити ваше репо доступним через веб-інтерфейс (просто розміщення його в Інтернеті цього не робить).

Припускаю, ви можете заповнити фальшиву адресу електронної пошти або використати порожній рядок чи пробіл чи щось інше (я не думаю, що Git перевіряє формат чи дійсність електронного листа), але електронний лист корисний, якщо хтось, хто клонує репо, повинен надіслати ви заплатку або якимось чином зв’язалися з вами.


3
Можна стверджувати, що github, gitweb та інші повинні мати можливість затемнювати електронні адреси, як це роблять глядачі архівів списків розсилки. Хоча це дійсна адреса електронної пошти - це просто умова, інструменти, такі як 'git send-email', написані з припущенням, що це правда (наприклад, автоматичне копіювання авторів виправлень)
araqnid

2
Ви можете налаштувати git на використання інших ідентифікаційних даних, що відповідають імені user.name та user.email для ключа GPG для підписання тегів
Jakub Narębski

Старі централізовані системи контролю версій використовують "ім'я користувача" для ідентифікації автора коміту (зміни). Ім'я та електронна пошта - це хороша ідентичність; це не обов'язково має бути справжньою електронною поштою.
Якуб Нарембський

3
GitHub має оновлення , де ви можете використовувати підроблені адреси електронної пошти , пов'язаний з вашим профілем - stackoverflow.com/a/20533922/2158473
RyPeck

GitHub може запам'ятати навіть PR-коміти на видаленій гілці, які були об'єднані під час перебазування (і тому, не виставляйте електронну адресу / ім'я ніде в репо, крім веб-сторінки PR). Якщо PR було об’єднано, я не знаю жодного способу скасувати коміти (якщо він все ще відкритий, Ви можете перебазувати і змусити натиснути).
DA

44

Оновлення в квітні 2017 року

Див. " Приватні електронні листи, тепер більш приватні "

GitHub вже деякий час підтримує використання альтернативної електронної адреси "noreply" для авторських веб-комітів. З сьогоднішнього дня існує інший спосіб переконатись, що ви ненавмисно не публікуєте свою адресу електронної пошти під час надсилання комітів до 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щоб переписати історію сховища та змусити нову історію вгору.


1
Це корисно знати, однак, я думаю, повинно бути дуже ясно, що GitHub - це не те саме git. git- загальний інструмент із відкритим кодом, інструмент контролю редагувань, тоді як GitHub - це веб-сайт, що дозволяє публікувати gitсховище. GitHub не створював git, вони просто створили дуже гарний веб-сайт, який добре працює з ним.
orev

@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

Як приклад.


5

Мільйони електронних листів про коміти GitHub просочились

https://github.com/cirosantilli/all-github-commit-emails, витягнуті з архівів GitHub https://www.githubarchive.org .

Архів GitHub отримує дані з 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 commit?

Тому зрозуміло, що ця інформація додається до комітів за замовчуванням.


4

Так, ваша електронна адреса (як зазначено в git config user.email) буде видно у веб-інтерфейсах, таких як GitWeb. Також кожен може дізнатися вашу адресу електронної пошти, клонуючи ваш репозиторій, хоча це, мабуть, все ще далеко за межами спам-ботів. Однак вас ніхто не змушує використовувати справжню електронну адресу. Git автоматично встановить побудовану електронну адресу, якщо її не вказано. На моїй машині без user.emailнього відображаються коміти "Foo <foo @ daughter. (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 - звичайна практика.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.