O Git expõe publicamente meu endereço de e-mail?


95

Os guias que li até agora sobre o Git dizem que devo entrar na configuração e especificar meu nome e endereço de e-mail. Eles não elaboram; eles apenas dizem para fazer isso.

Por que o Git precisa do meu endereço de e-mail? E, mais importante, se eu disponibilizar meu repo publicamente, via GitHub, por exemplo, meu endereço de e-mail ficará visível para todos (incluindo spambots)?


19
Eu acho que esta é uma pergunta válida (embora não técnica) sobre uma ferramenta relacionada à programação - como muitas outras questões no SO - e não merece ser rebaixada como "não relacionada à programação".
Jonik

3
O GitHub agora (agosto de 2013) permite que você mantenha seu endereço de e-mail privado! Veja minha resposta abaixo . Você pode registrar um endereço de e-mail falso também, para não usá-lo nos commits que você está enviando para o GitHub.
VonC

Respostas:


36

Git usa seu endereço de e-mail para identificá-lo, bem como para fazer outras tarefas (como assinar uma tag com uma chave GPG). Seu endereço de e-mail é incorporado como parte de sua identidade nos logs de commit, etc., junto com o nome que você especificar. Por exemplo, o campo "autor" em um log de confirmação seria mostrado como:

Author: Joe White <joewhite@mysite.com>

Portanto, a informação está disponível para qualquer pessoa com uma cópia do repo, uma vez que atua como um identificador.

Seu e-mail provavelmente não ficará visível para spambots, a menos que você use o Gitweb, ou um serviço como o GitHub, para disponibilizar seu repo por meio de uma interface da web (apenas colocá-lo na Internet não faz isso).

Suponho que você possa preencher um endereço de e-mail falso ou usar uma string vazia, espaço ou algo assim (não acho que o Git verifique o formato ou a validade do e-mail), mas o e-mail é útil se alguém que clona o repo precisa enviar você um patch ou contatá-lo de alguma forma.


3
Indiscutivelmente github, gitweb et al devem ter uma opção para ocultar endereços de e-mail, assim como os visualizadores de arquivos de listas de discussão fazem. Embora ser um endereço de e-mail válido seja apenas uma convenção, ferramentas como 'git send-email' são escritas assumindo que é verdade (autores de patch com cópia automática, por exemplo)
araqnid

2
Você pode configurar o git para usar outra identidade que aquela fornecida por user.name e user.email para chave GPG para assinatura de tags
Jakub Narębski

Os sistemas de controle de versão centralizados mais antigos usam "nome de usuário" para identificar o autor de um commit (de uma mudança). Nome + e-mail é uma boa identidade; não precisa ser um e-mail real.
Jakub Narębski

3
O GitHub tem uma atualização onde você pode usar um endereço de e-mail falso vinculado ao seu perfil - stackoverflow.com/a/20533922/2158473
RyPeck

O GitHub pode lembrar até mesmo os commits de PR em um branch excluído que foram mesclados com rebase (e, portanto, não exponha o e-mail / nome em qualquer lugar do repo, exceto na página da web de PR). Se o PR foi mesclado, não conheço nenhuma maneira de reverter os commits (se ainda estiver aberto, você pode rebase e forçar o push).
DA

43

Atualização de abril de 2017

Veja " Emails privados, agora mais privados "

O GitHub tem suportado o uso de um endereço de e-mail "noreply" alternativo para criar commits baseados na web por um tempo. A partir de hoje, há outra maneira de garantir que você não publique inadvertidamente seu endereço de e-mail ao enviar commits para o GitHub por meio da linha de comando.

Git usa seu endereço de e-mail para associar seu nome a qualquer commit de sua autoria. Depois de enviar seus commits para um repositório público no GitHub, os metadados de autoria também são publicados.

Se quiser garantir que não publique acidentalmente seu endereço de e-mail, basta marcar as opções "Manter meu endereço de e-mail privado" e "Bloquear push de linha de comando que expõem meu e-mail" nas configurações de e-mail .

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

Nota: conforme comentado abaixo por orev , Git não expõe nada. O GitHub , um serviço de hospedagem de repositórios Git , pode.
O lugar onde você está enviando seu repositório Git local pode expor metadados.


Nota: A partir de 9 de agosto de 2013, agora você pode manter seu endereço de e-mail privado !

Porém, isso é para operações GitHub baseadas na web: os commits ainda contêm um endereço de e-mail, que pode ou não ser o mesmo que o usado para sua conta GitHub.
Veja abaixo como "mascarar" esse e-mail (git commit) também.

Até hoje, todo o GitHub Flow baseado na web usava seu endereço de e-mail principal. Isso inclui a criação, edição e exclusão de arquivos, bem como a mesclagem de solicitações pull.

Mas agora você pode manter seu endereço de e-mail privado. Para fazer isso, visite sua página de configurações de e-mail:

configurações de e-mail

Com isso ativado, as operações baseadas na web usarão um endereço de e-mail username@users.noreply.github.com.


Se você deseja ocultar seu e-mail feito de seu computador, o GitHub agora permite que você registre diferentes endereços de e-mail : consulte este guia .

Você ainda precisa configurar seu e-mail (falso) em seu repositório local antes de enviar de volta ao GitHub, se quiser que seus commits reflitam

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

Então:

  • Vá para o menu de configuração de e-mails
  • Clique em "Adicionar outro endereço de e-mail"
  • Digite o e-mail falso (por exemplo, " user@server.fake") e clique em "Adicionar"

adicionar novo endereço de e-mail

Observe que:

Esta configuração afeta apenas os commits futuros .
Se você quiser apagar seu endereço de email real do histórico de commits do seu repositório, você terá que reescrever seus commits antigos. A maneira mais fácil de fazer isso é:

Use git filter-branchpara reescrever o histórico do repositório e forçar o push do novo histórico.


1
É útil saber disso, mas acho que deve ficar bem claro que o GitHub não é o mesmo a git. gité uma ferramenta de controle de revisão de código aberto de uso geral, enquanto o GitHub é um site que permite publicar um gitrepositório. O GitHub não criou git, eles apenas criaram um site muito bom que funciona bem com ele.
orev

@orev Bom ponto. Eu incluí esse aviso na resposta.
VonC de

10

O GitHub tem um artigo de ajuda chamado Mantendo seu endereço de e-mail privado , que começa:

O Git exige que você se identifique para fazer commits, mas você pode ocultar suas informações de contato usando um endereço falso. O próprio Git não se importa se o e-mail é válido.

É bom saber: embora o Git não se importe, alguns projetos podem não aceitar contribuições de você se seus commits não tiverem um endereço de e-mail válido, então você vai querer pesquisar as políticas de contribuição do seu projeto antes de seguir estas instruções.

O GitHub não recebe muitos relatórios de spam enviado para endereços de e-mail de commit do Git, mas se você estiver preocupado com isso, este guia deve ajudá-lo a resolver essas questões.

O guia contém as etapas de como configurar o Git e o GitHub para usar um endereço falso.


Estou recebendo muito spam no meu endereço de e-mail de commit do GitHub. Eu uso um dedicado para isso.
Mitar de

6

Sim, as respostas acima estão corretas ... exceto que você deseja normalmente ter o mesmo endereço de e-mail para todos os seus projetos, então você usaria o comando:

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

Você também pode editar o arquivo .gitconfig em seu diretório inicial, na seção do usuário.

Você pode especificar um e-mail diferente para um projeto específico executando o mesmo comando sem a opção global.

Além disso, sugiro que você pode ofuscar seu e-mail se os envios forem para uma área pública:

briancolfer(at)comcast.net

Como um exemplo.


5

Milhões de emails de commit do GitHub vazaram

https://github.com/cirosantilli/all-github-commit-emails extraídos dos arquivos do GitHub https://www.githubarchive.org exportações commit.

O arquivo GitHub obtém dados da API de eventos do GitHub: https://developer.github.com/v3/activity/events/types/#pushevent e os exporta para o Google BigQuery de hora em hora, o que facilita a consulta.

Emails são mostrados em eventos do tipo PushEvent.

Não acho que os emails de commit apareçam em qualquer lugar da interface da web do GitHub, então qualquer coleção é limitada pela limitação da taxa de API. TODO: quanto tempo para coletar 1 milhão de e-mails via API do zero.

Maneira prática de obter o e-mail de confirmação de alguém com a API

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

ou visite: https://api.github.com/users/cirosantilli/events/public

Há também:

A estrutura de dados do Git commit tem um autor explícito e um campo de e-mail do committer

Mostrado em: Qual é o formato de arquivo de uma estrutura de dados de objeto git commit?

Portanto, está claro que essas informações são adicionadas aos commits por padrão.


4

Sim, seu endereço de e-mail (conforme especificado em git config user.email) ficará visível em interfaces da web como GitWeb. Além disso, todos podem descobrir seu endereço de e-mail clonando seu repositório, embora isso provavelmente ainda esteja muito além de spambots. Ninguém o força a usar um endereço de e-mail real, no entanto. O Git irá definir automaticamente um endereço de e-mail construído se nenhum for fornecido. Na minha máquina sem user.emailele mostra os commits de “Foo <foo @ daughter. (Nenhum)>”.


4

Você pode alterar retroativamente o nome do autor, e-mail etc. CUIDADO, pois fazer o seguinte pode corromper seu histórico.

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

Retirado daqui


4

O GitHub tem uma seção de ajuda sobre como configurar seu endereço de e-mail.

Especificamente, diz:

É bom saber: você não precisa fornecer um e-mail válido. Se você estiver preocupado com spam, use um e-mail falso. usuário@example.com é uma prática comum.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.