Git: erro "por favor me diga quem você é"

226

Eu tenho servidores de aplicativos que inicializo juntos usando o Chef + alguns scripts ad-hoc bash. O problema é que, quando quero executar uma atualização em um desses servidores de aplicativos, recebo:

19:00:28: *** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

Eu realmente preciso definir isso para que seja simples git pull origin mastersempre que atualizar um servidor de aplicativos? Existe alguma maneira de substituir esse comportamento para que não ocorra um erro quando o nome e o email não estiverem definidos?

randombits
fonte
3
Pelo que encontrei não, mas novamente não vejo problema em adicionar seu nome e email, mesmo que sejam apenas nomes e emails falsos.
Sean
10
Sim, você deve configurá-las, se o "simples" git pullcriar um commit, porque ele fez uma mesclagem, por exemplo.
fork0
1
Você descreve o cenário de implantação unidirecional. Eu não adicionaria as credenciais para evitar quaisquer confirmações automerging. Sim, você verá o problema com esse erro, mas isso significa que alguém está bisbilhotando a produção e altera os arquivos manualmente, acionando a mesclagem.
Alex Skrypnyk

Respostas:

249

Eu gasto muitas horas quando eu chamo o script php para iniciar e confirmar o git. E eu achei o fluxo de trabalho deve ser:

1.git init
2.git config user.name "someone"
3.git config user.email "[email protected]"
4.git add *
5.git commit -m "some init msg"

Se você trocar [23] e 1, a configuração não funcionará.

Gostaria que isso ajudasse.

luxuia
fonte
Esta é a prática correta para iniciar um repositório git. Mas para atualizar uma solução repo @gfxmonk é melhor
Davisein
Você pode explicar como está funcionando e por que estava dando erro antes de fazer isso?
Chinmaya B
1
Você pode adicionar a --globalopção aos git configcomandos e fazê-lo uma vez na sua conta do SO. Depois disso, as etapas 2-3 não são necessárias.
X-yuri
50

Em vez de fazer a git pull, você pode:

git fetch
git reset --hard origin/master

Nenhum deles exige que você configure seu nome de usuário / email do git.

Isso destruirá quaisquer alterações / confirmações locais não confirmadas e deixará seu HEAD apontando para uma confirmação (não uma ramificação). Mas nenhum desses deve ser um problema para um servidor de aplicativos, pois você não deve fazer alterações locais ou se comprometer com esse repositório.

gfxmonk
fonte
O automerge do git pull é perigoso nessa situação, é melhor fazer um reset.
Davisein 21/11
Não seria melhor usar git fetch && git reset --hard HEAD?
jacoor
@jacoor Nope: git reset --hard HEADsimplesmente joga fora as alterações uncomitted, isso não muda o que comprometer o seu espaço de trabalho baseia-se (desde, por definição, você já está no HEAD)
gfxmonk
33

Se você estiver usando o sourcetree: Repositório -> Configurações do Repositório -> Avançado -> desmarque a caixa "Usar configurações globais do usuário"

funcionou muito bem para mim.

DoronK
fonte
no meu caso, tive que verificar novamente, mas de qualquer maneira! Obrigado pela sua ajuda
Karoly
32

funciona para mim, tente isto .. você precisa configurar seu terminal com acesso remoto.

     git config --global user.name "abc"
     git config --global user.email "[email protected]"
Kuldeep Singh
fonte
10

Atualize seu processo de inicialização para criar um ${HOME}/.gitconfigcom o conteúdo adequado ou copiar um existente de algum lugar.

Twalberg
fonte
9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Isso funcionou muito bem para mim.

MrRobot4.0
fonte
4

O mesmo problema ocorreu comigo e o resolvi adicionando o nome padrão e as configurações de repositório de email.

Como Doron sugeriu -

Se você estiver usando o sourcetree: Repositório -> Configurações do Repositório -> Avançado -> desmarque a caixa "Usar configurações globais do usuário".

Adicione o nome e endereço de email padrão.

Rahul
fonte
4

No meu caso, estava faltando "e" na palavra "email", como Chad afirmou acima, mas não vejo o seu caso. Por favor, pressione o seguinte comando para ver se tudo está funcionando conforme o esperado.

git config -l
Mo-Gang
fonte
4

Você deve escrever seu email assim

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

Então: Escreva o nome de usuário

 git config --global user.name "Your Name"

A janela After That Poupup aparecerá.

Escreva USERNAME & EMAIL para a conta que você deseja contribuir

Abu Bakr
fonte
3

Para mim, o problema era a conexão de rede. Uma vez reconectado ao meu wifi, ele poderia buscar os detalhes e confirmar sem problemas.

Sharukh Mastan
fonte
2

Eu realmente preciso definir isso para fazer um simples mestre de origem do git pull toda vez que atualizo um servidor de aplicativos? Existe alguma maneira de substituir esse comportamento para que não ocorra um erro quando o nome e o email não estiverem definidos?

Ele solicitará apenas uma vez e certifique-se de que a chave pública rsa para esta máquina seja adicionada à sua conta do github na qual você está tentando confirmar ou passar uma solicitação pull.

Mais informações sobre isso podem ser encontradas: Aqui

Mansab Uppal
fonte
1
O link está quebrado
Alice Schwarze
2

Eu tive isso como uma mensagem de erro com defeito:
git pullfuncionou bem na linha cmd
git pullfalhou em um processo Perl CGI (um webhook para implantar automaticamente no github) com o erro acima.

Fazendo um git statusarquivo em conflito identificado. A classificação corrigiu o problema.

Problema ocorreu mais tarde, quando alterei algumas configurações.

Dessa vez, a configuração dos envios $ HOME e $ USER corrigiu (são desabilitados por padrão em um processo CGI)

Andrew Murphy
fonte
2

Dê uma olhada no arquivo de configuração.

Repositório> Configurações do Repositório> Editar arquivo de configuração.

Verifique se a [user]seção existe. Se a seção do usuário estiver ausente, adicione-a.

Exemplo:

[user]
name = "your name"
email = "your email"
Aman Srivastava
fonte
2

eu uso o heroku cli 1. deve usar todo o nome de usuário e email de usuário

$ git config --global user.email .login email.

$ git config --global user.name .heroku name.

  1. git pull [git url]
  2. git init
  3. git add *

    5 git commit -m "após a configuração user.name, email do usuário"

  4. git push heroku master

linepro
fonte
2

Eu uso o Jenkins e tive esse problema ao tentar executar uma liberação (que requer uma confirmação do git). Para corrigir os problemas, eu precisava adicionar um nome de usuário / endereço de email personalizado (veja a figura). Nome de usuário / endereço de email personalizadosIsso garantiu que, quando o código fosse retirado, ele usasse o nome / endereço de email do usuário de compilação ao executar a liberação. Observe que essa configuração está disponível na configuração do projeto Jenkins Multibranch Pipeline.

Craig
fonte
2

git pullnão deve exigir isso. No entanto, se a atração causar um conflito de mesclagem, isso parecerá necessário.

Kjeld Flarup
fonte
2

IMHO, a maneira correta de resolver esse erro é configurar seu arquivo de configuração global do git.

Para fazer isso, execute o seguinte comando: git config --global -e

Um editor aparecerá onde você poderá inserir suas configurações padrão do git.

Aqui estão alguns:

[user]
    name = your_username
    email = [email protected] 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Para obter mais detalhes, consulte Personalizando o Git - Configuração do Git

Quando você vê um comando como git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... você pode colocar isso no seu arquivo de configuração global do git como:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Para configurações únicas, você pode usar algo como git config --global user.name 'your_username'

Se você não definir suas configurações globalmente, precisará fazê-lo para cada repositório Git com o qual você trabalha localmente.

As configurações user.name e user.email informam ao git quem você é; portanto, os git commitcomandos subsequentes não reclamam,*** Please tell me who you are.

Muitas vezes, os comandos que o git sugere que você execute não são o que você deve executar. Desta vez, os comandos sugeridos não são ruins:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

Dica: Até eu me familiarizar com o git, fazer um backup do meu arquivo de projeto - antes de executar os comandos sugeridos do git e explorar as coisas que eu pensava que funcionaria - salvou meu bacon em mais de algumas ocasiões.

l3x
fonte
2

Não é possível detectar automaticamente o endereço de email.

Por padrão, leva o nome de usuário do seu sistema [email protected].

Então, você precisa definir seu e-mail como abaixo:

git config user.email "[email protected]"

Após definir o email, você pode executar os comandos git e confirmar suas alterações.

  1. git init
  2. git add *
  3. git commit -m "algumas msg init"
AMIT SAMOTA
fonte
1

Eu encontrei essa mensagem de erro enquanto tentava confirmar alguns arquivos.

Simplesmente executando git fetche tentando meu commit novamente funcionou para mim.

bergie3000
fonte
0

Para corrigir, eu uso: git config --global user.email "[email protected]" e funciona.

user.mail não funciona, precisa colocar um E. Typo talvez?

Victor Hugo Nogueira dWolf
fonte
Acho que o OP quer saber se isso é realmente necessário para cada atualização.
tbrk 12/05/19
-5

Isso é um erro de digitação. Você definiu acidentalmente "user.mail" sem " e ". Corrija-o definindo "user. E- mail" na configuração global com

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

Solução encontrada aqui

https://stackoverflow.com/a/14662703

Girish Joshi
fonte
3
Onde você vê "'user.mail' sem 'e'" nesta página?
Chad Nouis