Erro “Seu envio publicaria um endereço de e-mail privado”


110

Sou muito novo no GitHub / VCS .

Quando tento compartilhar meu projeto no GitHub, recebo a seguinte mensagem de erro.

    Can't finish GitHub sharing process
    Successfully created project 'myproject' on GitHub, but initial push failed:
    remote: error: GH007: Your push would publish a private email address.
    failed to push some refs to 'https://github.com/me/myproject.git'

Pesquisei a mensagem de erro no Google e não obtive resultados. Também pesquisei no Stack Exchange, mas sem charuto. Como posso resolver esse problema?

Respostas:


66

Também recebi a mesma error: GH007mensagem e usei o seguinte para resolver o problema.

  1. Vá para Configurando seu endereço de e-mail de commit .
  2. Siga a configuração de seu endereço de e-mail para cada repositório em seu computador .
  3. Abra sua conta GitHub e vá para ConfiguraçõesEmails .
  4. Marque a caixa de seleção Manter meu endereço de e-mail privado .
  5. Desmarque a caixa de seleção Bloquear push de linha de comando que expõem meu e-mail .

Isso pode expor seu endereço de e-mail.


24
Esta é uma solução, mas pode realmente expor seu endereço de e-mail. Se você tiver algum commit que não tenha sido enviado ainda, você precisará desmarcar Bloquear push da linha de comando que expõe meu e-mail. Então você pode enviar esses commits pendentes. Em seguida, atualizar o seu endereço de e-mail para o endereço de e-mail sem resposta e verificar Bloco empurra linha de comando que expõem o meu e-mail novamente para manter seu privada endereço.
SvenAelterman de

5
@SvenAelterman update your email address to the no-reply email addressonde? Nas configurações do github ou em sua máquina local em algum lugar que provavelmente está enviando / usando seu endereço de e-mail privado? Parece-me contra-intuitivo que eu deva copiar e colar um endereço de e-mail gerado pelo github diretamente no github, em vez de apenas clicar em uma caixa de seleção, portanto, presumo que a leitura esteja incorreta. Ou é??
hippietrail

15
Para alterar o e-mail de seu último commit, usegit commit --amend --author="Author Name <email@address.com>"
dspacejs

9
É muito melhor usar a solução de @Winfried aqui . Não expor seu endereço de e-mail publicamente
Connor

8
Concordo, a resposta correta é @ Winfried's stackoverflow.com/a/51097104/7872793 .
Shane,

229

Ao habilitar o recurso “Bloquear push de linha de comando que expõem meu e-mail”, você também deseja configurar o Git para usar seu endereço de e-mail sem resposta. Não se preocupe - isso não afetará seu gráfico de contribuição. Todos os commits ainda estarão associados à sua conta.

  1. Abra o Terminal.

  2. Mude o diretório de trabalho atual para o repositório local onde você deseja configurar o endereço de e-mail que você associa aos seus commits Git.

  3. Encontre seu endereço noreply do GitHub em Configurações pessoais do GitHub → Emails . Isso é mencionado na descrição da caixa de seleção Manter meu endereço de e-mail privado . Normalmente, ele começa com um identificador exclusivo, mais seu nome de usuário.

  4. Defina um endereço de e-mail no Git. Use seu endereço de e-mail sem resposta fornecido pelo GitHub.

    • Configurando seu endereço de e-mail para cada repositório em seu computador

      git config --global user.email "{ID}+{username}@users.noreply.github.com"
      
    • Configurando seu endereço de e-mail para um único repositório

      git config user.email "{ID}+{username}@users.noreply.github.com"
      
  5. Redefina as informações do autor em seu último commit:

    git commit --amend --reset-author
    

    Se você tiver vários commits com seu endereço de e-mail privado, veja esta resposta .

  6. Agora você pode enviar o commit com o endereço de e-mail do noreply, e os commits futuros também terão o endereço de e-mail do noreply.

    git push
    

Depois de configurar o Git, os commits usarão seu endereço de e-mail alternativo “noreply”, e quaisquer pushes que não o fizerem serão rejeitados.


28
Esta deve ser a resposta aceita. A resposta @sofia-fernandez pode expor os endereços de e-mail. Existe alguma maneira de tornar isso um pouco mais curto e mais legível? Você tem duas seções principais onde a única diferença é a --globalbandeira
Connor

Tive alguns problemas com a interface do Linux (usei o terminal SourceTree e já faz algum tempo que não uso o VI), você pode adicionar -m <comment>se quiser evitar isso.
MikeL

2

Você provavelmente ativou (ou está ativado agora por padrão) o recurso de privacidade de e-mail do GitHub.

Ele está detalhado nesta página de ajuda do GitHub .

Resumindo, há uma chave que você pode habilitar (que está habilitada em sua conta) que impede qualquer push em que o usuário seja seu endereço de e-mail real. Você pode usar um endereço anônimo em vez disso (ou optar por desativar o recurso).

Os detalhes de ambas as opções estão disponíveis na mesma página .


Obrigado! Eu tornei meus endereços de e-mail anônimos e isso resolveu o problema!
user156060

Usar o endereço de e-mail anônimo é uma boa solução. Se você o criou antes de 18 de julho de 2017, convém fazê-lo novamente para obter 7 dígitos aleatórios adicionados a ele.
SvenAelterman


0
  1. Vamos para Settings
  2. Clique em Emails. Role para baixo. Keep my email addresses privateseção estará lá.
  3. Anote o ID do e-mail público mencionado ali.
  4. Redefina sua id de email global local com id de email público mencionado na etapa anterior usando o seguinte comando.
$ git config — global user.email "<user_email_id>"
  1. Reverta seu último commit local que estava sendo bloqueado.
$ git reset --soft HEAD~1 
  1. Faça um novo commit e envie-o. Vai funcionar.

-2

Eu tive o mesmo problema. Minha solução está na imagem abaixo:

Configurações do GitHub


7
Você define para publicar seu e-mail, abrir para todos os raspadores e coisas do
gênero

Como isso difere da resposta aceita (postada quase um ano antes)?
Peter Mortensen
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.