Czy Git publicznie ujawnia mój adres e-mail?

96

Przewodniki, które przeczytałem do tej pory na temat Gita, mówią, że powinienem przejść do konfiguracji i podać swoje imię i adres e-mail. Nie rozwodzą się; po prostu mówią, żeby to zrobić.

Dlaczego Git potrzebuje mojego adresu e-mail? A co ważniejsze, czy jeśli udostępnię swoje repozytorium publicznie, na przykład przez GitHub, czy mój adres e-mail będzie widoczny dla wszystkich (w tym dla spamerów)?

Joe White
źródło
19
Myślę, że jest to ważne (choć nietechniczne) pytanie dotyczące narzędzia związanego z programowaniem - podobnie jak wiele innych pytań dotyczących SO - i nie zasługuje na to, aby je zlekceważyć jako „niezwiązane z programowaniem”.
Jonik
3
GitHub teraz (sierpień 2013) pozwala zachować prywatność Twojego adresu e-mail! Zobacz moją odpowiedź poniżej . Możesz również zarejestrować fałszywy adres e-mail, aby nie używać go w zatwierdzeniach, które wysyłasz do GitHub.
VonC

Odpowiedzi:

36

Git wykorzystuje Twój adres e-mail do identyfikacji Ciebie, a także do wykonywania innych zadań (takich jak podpisywanie tagu kluczem GPG). Twój adres e-mail jest osadzany jako część Twojej tożsamości w dziennikach zatwierdzeń itp., Wraz z podaną nazwą. Na przykład pole „autor” w dzienniku zmian byłoby wyświetlane jako:

Author: Joe White <[email protected]>

Tak więc informacje są dostępne dla każdego, kto ma kopię repozytorium, ponieważ działa jako identyfikator.

Twój e-mail prawdopodobnie nie będzie widoczny dla robotów spamujących, chyba że użyjesz Gitweb lub usługi takiej jak GitHub, aby udostępnić repozytorium przez interfejs WWW (samo umieszczenie go w Internecie nie robi tego).

Przypuszczam, że możesz wpisać fałszywy adres e-mail lub użyć pustego ciągu lub spacji lub czegoś takiego (nie sądzę, że Git sprawdza format lub ważność wiadomości e-mail), ale wiadomość e-mail jest przydatna, jeśli ktoś, kto klonuje repozytorium, musi wysłać masz łatkę lub skontaktuj się z tobą w jakiś sposób.

mipadi
źródło
3
Prawdopodobnie github, gitweb i inni powinni mieć możliwość ukrywania adresów e-mail, tak jak robią to osoby przeglądające archiwum list dyskusyjnych. Chociaż jest to prawidłowy adres e-mail to tylko konwencja, narzędzia takie jak `` git send-email '' są pisane przy założeniu, że to prawda (na przykład automatyczne cc'owanie autorów łatek)
araqnid
2
Możesz skonfigurować git tak, aby używał innej tożsamości niż ta podana przez user.name i user.email dla klucza GPG do podpisywania tagów
Jakub Narębski
Starsze scentralizowane systemy kontroli wersji używają „nazwy użytkownika” do identyfikacji autora zatwierdzenia (zmiany). Imię i adres e-mail to dobra tożsamość; nie musi to być jednak prawdziwy e-mail.
Jakub Narębski
3
GitHub ma aktualizację, w której możesz użyć fałszywego adresu e-mail połączonego z Twoim profilem - stackoverflow.com/a/20533922/2158473
RyPeck
GitHub może zapamiętać nawet zatwierdzenia PR na usuniętej gałęzi, które zostały scalone w ramach rebase (a więc nie ujawniaj adresu e-mail / nazwy w żadnym miejscu repozytorium poza stroną PR). Jeśli PR został scalony, nie znam żadnego sposobu na odwrócenie zatwierdzeń (jeśli nadal jest otwarty, możesz zmienić bazę i wymusić push).
środa,
44

Aktualizacja z kwietnia 2017 r

Zobacz „ Prywatne e-maile, teraz bardziej prywatne

GitHub już od jakiegoś czasu obsługuje używanie alternatywnego adresu e-mail „noreply” do tworzenia zatwierdzeń internetowych. Od dziś istnieje inny sposób, aby nieumyślnie nie opublikować swojego adresu e-mail podczas przesyłania zatwierdzeń do GitHub za pomocą wiersza poleceń.

Git wykorzystuje Twój adres e-mail, aby powiązać Twoje imię i nazwisko ze wszystkimi zobowiązaniami, których autorem jest. Po przesłaniu zatwierdzeń do publicznego repozytorium na GitHub publikowane są również metadane autorstwa.

Jeśli chcesz mieć pewność, że przypadkowo nie opublikujesz swojego adresu e-mail, po prostu zaznacz opcje „Zachowaj mój adres e-mail jako prywatny” i „Zablokuj wypychania wiersza poleceń, które ujawniają mój adres e-mail” w ustawieniach poczty e-mail .

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

Uwaga: jak poniżej opisane przez orev , Git nic nie narazić. GitHub , usługa hostingowa repozytoriów Git , może.
Miejsce, w którym wypychasz lokalne repozytorium Git, może udostępniać metadane.


Uwaga: od 9 sierpnia 2013 r. Możesz teraz zachować swój adres e-mail jako prywatny !

Dotyczy to jednak internetowych operacji GitHub: zatwierdzenia nadal zawierają adres e-mail, który może, ale nie musi być taki sam, jak ten używany na koncie GitHub.
Zobacz poniżej, aby "zamaskować" ten e-mail (zatwierdzony przez git).

Do dzisiaj wszystkie internetowe usługi GitHub Flow korzystały z Twojego podstawowego adresu e-mail. Obejmuje to tworzenie, edytowanie i usuwanie plików, a także scalanie żądań ściągnięcia.

Ale teraz możesz zachować swój adres e-mail jako prywatny. Aby to zrobić, odwiedź stronę ustawień poczty e-mail:

Ustawienia poczty e-mail

Po włączeniu tej opcji operacje internetowe będą używać adresu e-mail nazwa_uż[email protected].


Jeśli chcesz ukryć swój adres e-mail utworzony z komputera, GitHub umożliwia teraz rejestrację różnych adresów e-mail : zobacz ten przewodnik .

Nadal musisz skonfigurować (fałszywy) adres e-mail w swoim lokalnym repozytorium, zanim wrócisz do GitHub, jeśli chcesz, aby Twoje zobowiązania odzwierciedlały

git config --global user.email "[email protected]" # Set email to slightly changed value
git config --global user.email # Verify the setting
# [email protected]

Następnie:

  • Przejdź do menu ustawień E-maile
  • Kliknij „Dodaj kolejny adres e-mail”
  • Wpisz fałszywy adres e-mail (np. „ [email protected]”) I kliknij „Dodaj”

dodaj nowy adres e-mail

Zauważ, że:

To ustawienie ma wpływ tylko na przyszłe zatwierdzenia .
Jeśli chcesz usunąć swój prawdziwy adres e-mail z historii zmian repozytorium, będziesz musiał przepisać swoje stare zatwierdzenia. Najłatwiej to zrobić:

Służy git filter-branchdo przepisywania historii repozytorium i wypychania nowej historii w górę.

VonC
źródło
1
Warto to wiedzieć, jednak myślę, że powinno być bardzo jasne, że GitHub to nie to samo git. gitto narzędzie do kontroli wersji ogólnego przeznaczenia o otwartym kodzie źródłowym, podczas gdy GitHub to witryna internetowa, która umożliwia publikowanie gitrepozytorium. GitHub nie stworzył git, po prostu stworzył bardzo fajną stronę internetową, która dobrze z nim współpracuje.
orev
@orev Słuszna uwaga. Zawarłem to ostrzeżenie w odpowiedzi.
VonC,
10

GitHub zawiera artykuł pomocy zatytułowany Zachowanie prywatnego adresu e-mail , który zaczyna się:

Git wymaga od Ciebie identyfikacji w celu dokonywania zatwierdzeń, ale możesz ukryć swoje dane kontaktowe, używając fałszywego adresu. Sam Git nie dba o to, czy e-mail jest prawidłowy.

Warto wiedzieć: Chociaż Git to nie obchodzi, niektóre projekty mogą nie przyjmować wkładu od Ciebie, jeśli Twoje zatwierdzenia nie mają prawidłowego adresu e-mail, więc przed wykonaniem tych instrukcji będziesz chciał zapoznać się z zasadami dotyczącymi wkładu w projekt.

GitHub nie otrzymuje wielu raportów o wysyłaniu spamu na adresy e-mail firmy Git, ale jeśli się tym martwisz, ten przewodnik powinien pomóc Ci rozwiązać te problemy.

Przewodnik zawiera kroki, jak skonfigurować zarówno Git, jak i GitHub do używania fałszywego adresu.

Hugo
źródło
Dostaję dużo spamu na mój adres e-mail w serwisie GitHub. Używam do tego dedykowanego.
Mitar
6

Tak, powyższe odpowiedzi są poprawne ... z wyjątkiem tego, że zazwyczaj chcesz mieć ten sam adres e-mail dla wszystkich swoich projektów, a następnie użyjesz polecenia:

git config --global user.email "[email protected]"

Możesz także edytować plik .gitconfig w swoim katalogu domowym, w sekcji użytkownika.

Możesz określić inny adres e-mail dla konkretnego projektu, wykonując to samo polecenie bez opcji globalnej.

Proponuję również zaciemnienie wiadomości e-mail, jeśli przesłane treści trafiają do obszaru publicznego:

briancolfer(at)comcast.net

Jako przykład.

bcolfer
źródło
5

Wyciekły miliony e-maili z GitHub

https://github.com/cirosantilli/all-github-commit-emails wyodrębnione z archiwów GitHub https://www.githubarchive.org zobowiązanie eksportu.

Archiwum GitHub pobiera dane z interfejsu API wydarzeń GitHub: https://developer.github.com/v3/activity/events/types/#pushevent i co godzinę eksportuje je do Google BigQuery, co ułatwia tworzenie zapytań.

E-maile są wyświetlane przy wydarzeniach tego typu PushEvent.

Nie sądzę, aby wiadomości e-mail dotyczące zatwierdzania były wyświetlane w interfejsie internetowym GitHub, więc każda kolekcja jest ograniczona przez ograniczenie szybkości interfejsu API. DO ZROBIENIA: ile czasu na zebranie 1 mln e-maili przez API od zera.

Praktyczny sposób na otrzymanie czyjegoś emaila z potwierdzeniem za pomocą API

ghmail() { curl "https://api.github.com/users/$1/events/public" | grep email; }
ghmail cirosantilli

lub odwiedź: https://api.github.com/users/cirosantilli/events/public

Istnieje również:

Struktura danych zatwierdzenia Git ma wyraźne pole adresu e-mail autora i osoby zatwierdzającej

Pokazano na: Jaki jest format pliku struktury danych obiektu git commit?

Dlatego jest jasne, że ta informacja jest domyślnie dodawana do zatwierdzeń.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
źródło
4

Tak, Twój adres e-mail (określony w git config user.email) będzie widoczny w interfejsach internetowych, takich jak GitWeb. Ponadto każdy może poznać Twój adres e-mail, klonując repozytorium, chociaż prawdopodobnie nadal wykracza to poza spamboty. Nikt jednak nie zmusza Cię do używania prawdziwego adresu e-mail. Git automatycznie ustawi skonstruowany adres e-mail, jeśli nie zostanie podany. Na moim komputerze bez user.emailtego pokazuje zatwierdzenia przez „Foo <foo @ córka. (None)>”.

Bombe
źródło
4

Możesz z mocą wsteczną zmienić imię i nazwisko autora, adres e-mail itp. UWAŻAJ, że wykonanie poniższych czynności może spowodować uszkodzenie historii.

#!/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" = "[email protected]" ]
then
    cn="Your New Committer Name"
    cm="Your New Committer Email"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ]
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"
'

Zaczerpnięte stąd

jajonogi
źródło
4

GitHub zawiera sekcję pomocy dotyczącą ustawiania adresu e-mail.

W szczególności mówi:

Dobrze wiedzieć: nie musisz podawać prawidłowego adresu e-mail. Jeśli obawiasz się spamu, użyj fałszywego e-maila. [email protected] to powszechna praktyka.

g_fred
źródło