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 "you@example.com"
  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?


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 "someone@someplace.com"
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.


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.


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.


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 "abc@example.com"

10

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


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

Isso funcionou muito bem para mim.


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.


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

4

Você deve escrever seu email assim

 git config --global user.email "you@example.com"

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


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.


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


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)


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"

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


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.


2

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


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 = your_username@users.noreply.github.com 
[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 "you@example.com"
  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.


2

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

Por padrão, leva o nome de usuário do seu sistema abc@xyz.none.

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

git config user.email "someone@gmail.com"

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"

1

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

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


0

Para corrigir, eu uso: git config --global user.email "you@example.com" e funciona.

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


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 "you@example.com"

Solução encontrada aqui

https://stackoverflow.com/a/14662703


3
Onde você vê "'user.mail' sem 'e'" nesta página?
Chad Nouis
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.