Git: errore "per favore dimmi chi sei"


227

Ho dei server di app che avvio insieme usando Chef + alcuni script bash ad hoc. Il problema è che quando voglio eseguire un aggiornamento su uno di questi server di app, ottengo:

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"

Devo davvero impostare questo per fare un semplice git pull origin masterogni volta che aggiorno un server di app? Esiste un modo per ignorare questo comportamento in modo che non si verifichi un errore quando il nome e l'e-mail non sono impostati?


3
Da quello che ho riscontrato di no, ma di nuovo non vedo alcun problema con l'aggiunta del tuo nome ed e-mail anche se sono solo nomi ed e-mail falsi.
sean

10
Sì, devi impostarli, se il "semplice" git pullsta per creare un commit, perché ha fatto una fusione, per esempio.
fork0,

1
Descrivi lo scenario della distribuzione unidirezionale. Non aggiungerei le credenziali per evitare qualsiasi commit automerging. Sì, vedrai il problema con questo errore, ma questo significherà che qualcuno sta cercando la produzione e modifica i file attivando manualmente l'unione.
Alex Skrypnyk,

Risposte:


249

Ci passo molte ore quando chiamo script php per inizializzare e commettere git. E ho scoperto che il flusso di lavoro dovrebbe essere:

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 si scambiano [23] e 1, la configurazione non funzionerà affatto.

Vorrei che questo potesse aiutare.


Questa è la pratica corretta per avviare un repository git. Ma per aggiornare una soluzione reg @gfxmonk è meglio
Davisein,

Puoi spiegarci come funziona e perché stava dando errori prima di farlo?
Chinmaya B,

1
Puoi aggiungere --globalswitch ai git configcomandi e farlo una volta per il tuo account OS. Dopo di che non sono necessari i passaggi 2-3.
X-yuri,

50

Invece di fare un git pull, puoi fare:

git fetch
git reset --hard origin/master

Nessuno di questi richiede la configurazione del nome utente / e-mail git.

Ciò distruggerà eventuali modifiche / commit locali non impegnati e lascerà HEAD che punta a un commit (non a un ramo). Ma nessuno di questi dovrebbe essere un problema per un server di app poiché non dovresti apportare modifiche locali o impegnarti in quel repository.


L'automergere di git pull è pericoloso in questa situazione, è meglio fare un reset.
Davisein,

Non sarebbe meglio usare git fetch && git reset --hard HEAD ?
jacoor,

@jacoor no: git reset --hard HEADsemplicemente elimina le modifiche senza impegno, non cambia su cosa si basa il tuo spazio di lavoro (poiché per definizione sei già su HEAD)
gfxmonk,

33

Se si utilizza sourcetree: repository -> Impostazioni repository -> Avanzate -> deselezionare la casella "Usa impostazioni utente globali"

ha funzionato alla grande per me.


nel mio caso ho dovuto ricontrollarlo, ma comunque! Grazie per l'aiuto
Karoly,

32

funziona per me, prova questo .. devi configurare il tuo terminale con accesso remoto.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

Aggiorna il processo di bootstrap per crearne uno ${HOME}/.gitconfigcon i contenuti appropriati o per copiarne uno esistente da qualche parte.


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

Questo ha funzionato alla grande per me.


4

Lo stesso problema riguardava me e l'ho risolto aggiungendo il nome predefinito e le impostazioni del repository e-mail.

Come suggerito Doron -

Se si utilizza sourcetree: Repository -> Impostazioni repository -> Avanzate -> deselezionare la casella "Usa impostazioni utente globali".

Aggiungi nome e indirizzo email predefiniti.


4

Nel mio caso mi mancava "e" sulla parola "e-mail" come Chad ha affermato sopra, ma vedo che non è il caso con te. Premi il seguente comando per vedere se tutto tira come previsto.

git config -l

4

Devi scrivere la tua email in questo modo

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

Quindi: Scrivi nome utente

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

Dopo quella finestra di Poupup apparirà

Scrivi USERNAME & EMAIL Per lo Account che desideri contribuire


3

Per me il problema era la connessione di rete, una volta ricollegato al mio wifi, poteva recuperare i dettagli e impegnarsi senza problemi.


2

Devo davvero impostarlo per fare un semplice master origin di git pull ogni volta che aggiorno un server di app? Esiste un modo per ignorare questo comportamento in modo che non si verifichi un errore quando il nome e l'e-mail non sono impostati?

Ti verrà chiesto solo una volta e assicurati che la chiave pubblica rsa per questa macchina sia aggiunta sul tuo account github a cui stai tentando di eseguire il commit o di passare una richiesta pull.

Ulteriori informazioni al riguardo sono disponibili qui


1
Il collegamento è interrotto
Alice Schwarze,

2

Ho avuto questo come messaggio di errore difettoso: ha
git pullfunzionato bene sulla linea cmd
git pull non riuscita in un processo Perl CGI (un webhook per la distribuzione automatica da github) con l'errore sopra riportato.

Fare a git status file di conflitto identificato. L'ordinamento risolto il problema.

Il problema si è verificato in seguito quando ho modificato alcune impostazioni di configurazione.

Questa volta, impostando $ HOME e $ USER env vars è stato corretto (non sono impostati di default in un processo CGI)


2

Dai un'occhiata al file di configurazione.

Repository> Impostazioni repository> Modifica file di configurazione.

Controlla se la [user]sezione esiste. Se manca la sezione utente, aggiungila.

Esempio:

[user]
name = "your name"
email = "your email"

2

io uso heroku cli 1. devo usare tutto il nome utente e l'e-mail dell'utente

$ 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 "dopo aver configurato user.name, user email"

  4. git push heroku master


2

Uso Jenkins e ho riscontrato questo problema durante il tentativo di eseguire una versione (che richiede un commit git). Per risolvere i problemi, avevo bisogno di aggiungere un nome utente / indirizzo e-mail personalizzato (vedi immagine). Nome utente / indirizzo e-mail personalizzatoQuesto assicurava che quando il codice veniva estratto utilizzava il nome / indirizzo e-mail dell'utente durante l'esecuzione del rilascio. Nota, questa configurazione è disponibile dalla configurazione del progetto Jenkins Multibranch Pipeline.


2

git pullnon dovrebbe richiedere questo. Tuttavia, se l'attrazione provoca un conflitto di unione, allora sembra essere normale.


2

IMHO, il modo corretto per risolvere questo errore è configurare il tuo file di configurazione globale git.

Per fare ciò, esegui il seguente comando: git config --global -e

Apparirà un editor in cui è possibile inserire le configurazioni git predefinite.

Eccone alcuni:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Per maggiori dettagli, vedi Personalizzare Git - Configurazione Git

Quando vedi un comando come, git config...

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

... puoi inserirlo nel tuo file di configurazione globale git come:

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

Per configurazioni una tantum, puoi usare qualcosa di simile git config --global user.name 'your_username'

Se non imposti le tue configurazioni git a livello globale, dovrai farlo per ogni repository git con cui lavori localmente.

Le impostazioni user.name e user.email indicano a git chi sei, quindi i git commitcomandi successivi non si lamenteranno,*** Please tell me who you are.

Molte volte, i comandi git suggeriscono che si esegue non è ciò che si dovrebbe eseguire. Questa volta, i comandi suggeriti non sono male:

$ 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"

Suggerimento: fino a quando non ho acquisito familiarità con git, fare un backup del mio file di progetto - prima di eseguire i comandi git suggeriti ed esplorare cose che pensavo funzionassero - mi ha salvato la pancetta in più di alcune occasioni.


2

Non è in grado di rilevare automaticamente l'indirizzo e-mail.

Di default prende il tuo nome utente di sistema come abc@xyz.none.

Quindi devi impostare la tua email come di seguito:

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

Dopo aver impostato l'e-mail è possibile eseguire i comandi git e confermare le modifiche.

  1. git init
  2. git add *
  3. git commit -m "alcuni init msg"

1

Ho riscontrato questo messaggio di errore durante il tentativo di eseguire il commit di alcuni file.

Semplicemente correre git fetchquindi provare di nuovo il mio commit ha funzionato per me.


0

Per risolvere uso: git config --global user.email "you@example.com" e funziona.

user.mail nessun lavoro, forse hai bisogno di mettere un E. Typo?


Penso che l'OP voglia sapere se questo è veramente necessario per ogni aggiornamento.
martedì

-5

Questo è un errore di battitura. Hai accidentalmente impostato "user.mail" senza " e ". Risolvilo impostando "user. E mail" nella configurazione globale con

git config --global user.email "tu@esempio.com"

Soluzione trovata qui

https://stackoverflow.com/a/14662703


3
Dove vedi "'user.mail' senza 'e'" in questa pagina?
Chad Nouis,
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.