Git espone pubblicamente il mio indirizzo e-mail?


95

Le guide che ho letto finora su Git dicono che dovrei andare nella configurazione e specificare il mio nome e il mio indirizzo e-mail. Non elaborano; dicono solo di farlo.

Perché Git ha bisogno del mio indirizzo e-mail? E, cosa più importante, se rendo il mio repository pubblicamente disponibile, tramite GitHub ad esempio, il mio indirizzo e-mail sarà visibile a tutti (inclusi gli spambots)?


19
Penso che questa sia una domanda valida (sebbene non tecnica) su uno strumento relativo alla programmazione - come molte altre domande su SO - e non merita di essere sottovalutata come "non correlata alla programmazione".
Jonik

3
GitHub ora (agosto 2013) ti consente di mantenere privato il tuo indirizzo email! Vedi la mia risposta di seguito . Puoi anche registrare un indirizzo email falso, in modo da non usarlo nei commit che stai spingendo su GitHub.
VonC

Risposte:


36

Git utilizza il tuo indirizzo email per identificarti, oltre a svolgere altre attività (come firmare un tag con una chiave GPG). Il tuo indirizzo email viene incorporato come parte della tua identità nei registri di commit, ecc., Insieme al nome specificato. Ad esempio, il campo "autore" in un log di commit verrebbe visualizzato come:

Author: Joe White <joewhite@mysite.com>

Quindi le informazioni sono disponibili a chiunque abbia una copia del repo, poiché funge da identificatore.

La tua email probabilmente non sarà visibile agli spambot, però, a meno che tu non usi Gitweb, o un servizio come GitHub, per rendere disponibile il tuo repository tramite un'interfaccia web (semplicemente metterlo su Internet non lo fa).

Suppongo che potresti inserire un indirizzo email falso o usare una stringa o uno spazio vuoto o qualcosa del genere (non credo che Git controlli il formato o la validità dell'email), ma l'email è utile se qualcuno che clona il repo deve inviare una patch o contattarti in qualche modo.


3
Probabilmente github, gitweb et al dovrebbero avere un'opzione per oscurare gli indirizzi e-mail proprio come fanno i visualizzatori di archivi di mailing list. Sebbene si tratti di un indirizzo e-mail valido sia solo una convenzione, strumenti come 'git send-email' sono scritti assumendo che sia vero (ad esempio, inserendo automaticamente in copia gli autori delle patch)
araqnid

2
È possibile configurare git per utilizzare un'altra identità che quella fornita da user.name e user.email per la chiave GPG per la firma dei tag
Jakub Narębski,

I sistemi di controllo delle versioni centralizzati più vecchi utilizzano "nome utente" per identificare l'autore di un commit (di una modifica). Nome + email è una buona identità; non è necessario che sia una vera e-mail.
Jakub Narębski

3
GitHub ha un aggiornamento in cui è possibile utilizzare un falso indirizzo e-mail collegato al tuo profilo - stackoverflow.com/a/20533922/2158473
RyPeck

GitHub può ricordare anche i commit PR su un ramo cancellato che sono stati uniti sing rebase (e quindi, non esporre l'e-mail / nome in nessun punto del repository tranne che sulla pagina web PR). Se il PR è stato unito, non conosco alcun modo per invertire i commit (se è ancora aperto puoi rebase e forzare il push).
DA

43

Aggiornamento aprile 2017

Vedi " Email private, ora più private "

GitHub supporta da un po 'di tempo l'utilizzo di un indirizzo email alternativo "noreply" per creare commit basati sul web. A partire da oggi, c'è un altro modo per assicurarti di non pubblicare inavvertitamente il tuo indirizzo e-mail quando invii i commit a GitHub tramite la riga di comando.

Git utilizza il tuo indirizzo email per associare il tuo nome a tutti i commit che hai creato. Dopo aver inviato i tuoi commit a un repository pubblico su GitHub, vengono pubblicati anche i metadati di paternità.

Se desideri assicurarti di non pubblicare accidentalmente il tuo indirizzo e-mail, seleziona semplicemente le opzioni "Mantieni privato il mio indirizzo e-mail" e "Blocca i push della riga di comando che espongono la mia e-mail" nelle impostazioni della posta .

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

Nota: come commentato di seguito da orev , Git non espone nulla. GitHub , un servizio di hosting di repository Git , potrebbe.
Il luogo in cui stai spingendo il tuo repository Git locale può esporre i metadati.


Nota: a partire dal 9 agosto 2013, ora puoi mantenere privato il tuo indirizzo email !

Questo è per le operazioni GitHub basate sul web: i commit contengono ancora un indirizzo e-mail, che potrebbe o non potrebbe essere lo stesso di quello utilizzato per il tuo account GitHub.
Vedi sotto per "mascherare" anche quell'email (git commit).

Fino ad oggi, tutto GitHub Flow basato sul web utilizzava il tuo indirizzo email principale. Ciò include la creazione, la modifica e l'eliminazione di file, nonché l'unione di richieste pull.

Ma ora puoi mantenere privato il tuo indirizzo email. Per farlo, visita la tua pagina delle impostazioni di posta elettronica:

impostazioni dell 'email

Con questa opzione attivata, le operazioni basate sul Web utilizzeranno un indirizzo e-mail nomeutente@users.noreply.github.com.


Se vuoi nascondere la tua email fatta dal tuo computer, GitHub ora ti permette di registrare diversi indirizzi email : vedi questa guida .

Devi ancora configurare la tua (falsa) email nel tuo repository locale prima di tornare a GitHub, se vuoi che i tuoi commit riflettano

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

Poi:

  • Vai al menu di impostazione Email
  • Fai clic su "Aggiungi un altro indirizzo email"
  • Inserisci l'email falsa (ad es. " user@server.fake") E fai clic su "Aggiungi"

aggiungi un nuovo indirizzo email

Nota che:

Questa impostazione influisce solo sui commit futuri .
Se vuoi cancellare il tuo vero indirizzo email dalla cronologia dei commit del tuo repository, dovrai riscrivere i tuoi vecchi commit. Il modo più semplice per farlo è:

Utilizzare git filter-branchper riscrivere la cronologia del repository e forzare il push della nuova cronologia.


1
Questo è utile sapere, tuttavia penso che dovrebbe essere molto chiaro che GitHub non è la stessa cosa a git. gitè uno strumento di controllo di revisione generico, open source, mentre GitHub è un sito web che ti permette di pubblicare un gitrepository. GitHub non ha creato git, semplicemente hanno creato un sito Web molto carino che funziona bene con esso.
orev

@orev Buon punto. Ho incluso quell'avvertimento nella risposta.
VonC

10

GitHub ha un articolo della guida chiamato Mantenere privato il tuo indirizzo email , che inizia:

Git richiede che ti identifichi per effettuare i commit, ma puoi nascondere le tue informazioni di contatto utilizzando un indirizzo falso. A Git stesso non importa se l'email è valida.

Buono a sapersi: sebbene a Git non importi, alcuni progetti potrebbero non accettare contributi da te se i tuoi commit non hanno un indirizzo email valido, quindi ti consigliamo di ricercare le politiche di contribuzione del tuo progetto prima di seguire queste istruzioni.

GitHub non riceve molte segnalazioni di spam inviato a indirizzi e-mail di commit di Git, ma se sei preoccupato, questa guida dovrebbe aiutarti a risolvere tali problemi.

La guida contiene i passaggi su come configurare sia Git che GitHub per utilizzare un indirizzo falso.


Ricevo molto spam sul mio indirizzo e-mail di commit GitHub. Ne uso uno dedicato.
Mitar

6

Sì, le risposte precedenti sono corrette ... tranne per il fatto che in genere si desidera avere lo stesso indirizzo e-mail per tutti i progetti, quindi si utilizzerà il comando:

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

Puoi anche modificare il file .gitconfig nella tua home directory, nella sezione utente.

È possibile specificare un'e-mail diversa per un particolare progetto eseguendo lo stesso comando senza l'opzione globale.

Inoltre, ti suggerisco di offuscare la tua email se gli invii stanno andando in un'area pubblica:

briancolfer(at)comcast.net

Come esempio.


5

Milioni di email di commit di GitHub sono trapelate

https://github.com/cirosantilli/all-github-commit-emails estratto dagli archivi GitHub https://www.githubarchive.org export commit.

L'archivio GitHub ottiene i dati dall'API degli eventi di GitHub: https://developer.github.com/v3/activity/events/types/#pushevent e li esporta ogni ora su Google BigQuery, il che semplifica le query.

Le email vengono mostrate su eventi di tipo PushEvent.

Non penso che le email di commit vengano visualizzate da nessuna parte sull'interfaccia web di GitHub, quindi qualsiasi raccolta è limitata dalla limitazione della velocità dell'API. TODO: quanto tempo per raccogliere da zero 1 milione di email tramite API.

Modo pratico per ottenere l'email di commit di qualcuno con l'API

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

oppure visita: https://api.github.com/users/cirosantilli/events/public

Ci sono anche:

La struttura dei dati del commit di Git ha un campo email esplicito per l'autore e il committer

Mostrato a: Qual è il formato di file di una struttura dati di un oggetto commit git?

Pertanto è chiaro che queste informazioni vengono aggiunte ai commit per impostazione predefinita.


4

Sì, il tuo indirizzo email (come specificato in git config user.email) sarà visibile nelle interfacce web come GitWeb. Inoltre tutti possono apprendere il tuo indirizzo email clonando il tuo repository anche se questo è probabilmente ancora molto al di là degli spambots. Nessuno ti obbliga a usare un vero indirizzo email, però. Git imposterà automaticamente un indirizzo email costruito se non ne viene fornito nessuno. Sulla mia macchina senza di user.emailessa mostra i commit di "Foo <foo @ daughter. (None)>".


4

È possibile modificare retroattivamente il nome dell'autore, l'e-mail, ecc. ATTENZIONE che le seguenti operazioni possono danneggiare la cronologia.

#!/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"
'

Preso da qui


4

GitHub ha una sezione della guida sull'impostazione del tuo indirizzo email.

Nello specifico dice:

Buono a sapersi: non è necessario fornire un'e-mail valida. Se sei preoccupato per lo spam, utilizza invece un'e-mail falsa. user@example.com è una pratica comune.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.