Git: "s'il vous plaît dites-moi qui vous êtes"


227

J'ai des serveurs d'applications que je bootstrap ensemble en utilisant Chef + quelques scripts bash ad-hoc. Le problème est que lorsque je souhaite exécuter une mise à jour sur l'un de ces serveurs d'applications, j'obtiens:

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"

Dois-je vraiment définir cela pour faire un simple git pull origin masterchaque fois que je mets à jour un serveur d'applications? Est-il possible de remplacer ce comportement afin qu'il ne génère pas d'erreur lorsque le nom et l'e-mail ne sont pas définis?


3
D'après ce que j'ai rencontré, non, mais là encore, je ne vois aucun problème à ajouter simplement votre nom et votre adresse e-mail, même si ce ne sont que de faux noms et e-mails.
sean

10
Oui, vous devez les définir, si le "simple" git pullva créer un commit, car il a fait une fusion, par exemple.
fork0

1
Vous décrivez le scénario de déploiement à sens unique. Je n'ajouterais pas les informations d'identification pour éviter toute validation de fusion automatique. Oui, vous verrez le problème avec cette erreur, mais cela signifiera que quelqu'un fouille la production et modifie les fichiers manuellement déclenchant la fusion.
Alex Skrypnyk

Réponses:


249

J'y passe beaucoup d'heures quand j'appelle un script php pour initier et valider git. Et j'ai trouvé que le flux de travail devrait être:

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"

Si vous échangez [23] et 1, la configuration ne fonctionnera pas du tout.

J'espère que cela vous aidera.


C'est la bonne pratique pour lancer un référentiel git. Mais pour mettre à jour une solution repo @gfxmonk, c'est mieux
Davisein

Pouvez-vous expliquer comment cela fonctionne et pourquoi il donnait une erreur avant de le faire?
Chinmaya B

1
Vous pouvez ajouter un --globalcommutateur aux git configcommandes et le faire une fois pour votre compte OS. Après cela, les étapes 2-3 ne sont pas nécessaires.
x-yuri

50

Au lieu de faire un git pull, vous pouvez faire:

git fetch
git reset --hard origin/master

Aucun de ceux-ci ne vous oblige à configurer votre nom d'utilisateur / e-mail git.

Cela détruira toutes les modifications / validations locales non validées et laissera votre HEAD pointant vers une validation (pas une branche). Mais aucun de ces éléments ne devrait être un problème pour un serveur d'applications, car vous ne devriez pas apporter de modifications locales ni vous engager dans ce référentiel.


L'automerge de git pull est dangereux dans cette situation, il vaut mieux faire un reset.
Davisein

Ne serait-il pas préférable de l'utiliser git fetch && git reset --hard HEAD?
jacoor

@jacoor nope: git reset --hard HEADjette simplement vos modifications non validées, cela ne change pas le fondement de votre espace de travail (puisque par définition vous êtes déjà sur HEAD)
gfxmonk

33

Si vous utilisez sourcetree: Référentiel -> Paramètres du référentiel -> Avancé -> décochez la case "Utiliser les paramètres utilisateur globaux"

a très bien fonctionné pour moi.


dans mon cas, je devais vérifier, mais de toute façon! Merci pour votre aide
Karoly

32

cela fonctionne pour moi, essayez ceci .. vous devez configurer votre terminal avec un accès à distance.

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

10

Mettez à jour votre processus d'amorçage pour créer un ${HOME}/.gitconfigcontenu approprié ou pour en copier un existant quelque part.


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

Cela a très bien fonctionné pour moi.


4

Le même problème était avec moi et l'a résolu en ajoutant le nom par défaut et les paramètres de référentiel de messagerie.

Comme Doron l'a suggéré -

Si vous utilisez sourcetree: Référentiel -> Paramètres du référentiel -> Avancé -> décochez la case "Utiliser les paramètres utilisateur globaux".

Ajoutez le nom et l'adresse e-mail par défaut.


4

Dans mon cas, il me manquait "e" sur le mot "e-mail" comme le Tchad l'a déclaré ci-dessus mais je vois que ce n'est pas le cas avec vous. Veuillez cliquer sur la commande suivante pour voir si tout se passe comme prévu.

git config -l

4

Vous devez écrire votre e-mail comme ça

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

Ensuite: Écrivez le nom d'utilisateur

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

Après cette fenêtre Poupup apparaîtra

Écrivez NOM D'UTILISATEUR ET EMAIL pour le compte que vous voulez contribuer


3

Pour moi, le problème était la connexion réseau, une fois que je me suis reconnecté à mon wifi, il pouvait récupérer les détails et s'engager sans aucun problème.


2

Dois-je vraiment définir cela pour faire un simple maître d'origine git pull chaque fois que je mets à jour un serveur d'applications? Est-il possible de remplacer ce comportement afin qu'il ne génère pas d'erreur lorsque le nom et l'e-mail ne sont pas définis?

Il ne demandera qu'une seule fois et s'assurera que la clé publique rsa de cette machine est ajoutée sur votre compte github auquel vous essayez de valider ou de passer une demande de tirage.

Plus d'informations à ce sujet peuvent être trouvées: ici


1
Le lien est rompu
Alice Schwarze le

2

J'ai eu ceci comme un message d'erreur défectueux:
git pulla bien fonctionné sur la ligne cmd a
git pulléchoué dans un processus Perl CGI (un webhook à déployer automatiquement à partir de github) avec l'erreur ci-dessus.

Faire un git statusfichier de conflit identifié. Le trier a résolu le problème.

Le problème est réapparu plus tard lorsque j'ai modifié certains paramètres de configuration.

Cette fois, la définition des variables d'environnement $ HOME et $ USER l'a corrigé (elles ne sont pas définies par défaut dans un processus CGI)


2

Jetez un œil au fichier de configuration.

Référentiel> Paramètres du référentiel> Modifier le fichier de configuration.

Vérifiez si la [user]section existe. Si la section utilisateur est manquante, ajoutez-la.

Exemple:

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

2

j'utilise heroku cli 1. doit utiliser tous les nom d'utilisateur et email de l'utilisateur

$ 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 "après config user.name, email de l'utilisateur"

  4. git push heroku master


2

J'utilise Jenkins et suis tombé sur ce problème lorsque j'essayais d'effectuer une version (qui nécessite un commit git). Pour résoudre les problèmes, je devais ajouter un nom d'utilisateur / adresse e-mail personnalisé (voir photo) Nom d'utilisateur / adresse e-mail personnalisés.Cela s'est assuré que lorsque le code était extrait, il utilisait le nom / l'adresse e-mail de mon utilisateur de génération lors de la publication. Remarque, cette configuration est disponible à partir de la configuration du projet Jenkins Multibranch Pipeline.


2

git pullne devrait pas exiger cela. Cependant, si l'attraction provoque un conflit de fusion, cela semble nécessaire.


2

À mon humble avis, la bonne façon de résoudre cette erreur est de configurer votre fichier de configuration git global.

Pour ce faire, exécutez la commande suivante: git config --global -e

Un éditeur apparaîtra où vous pourrez insérer vos configurations git par défaut.

En voici quelques uns:

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

Pour plus de détails, voir Personnalisation de Git - Configuration de Git

Lorsque vous voyez une commande comme, git config...

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

... vous pouvez mettre cela dans votre fichier de configuration git global comme:

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

Pour des configurations uniques, vous pouvez utiliser quelque chose comme git config --global user.name 'your_username'

Si vous ne définissez pas vos configurations git globalement, vous devrez le faire pour chaque dépôt git avec lequel vous travaillez localement.

Les paramètres user.name et user.email indiquent à git qui vous êtes, donc les git commitcommandes suivantes ne se plaindront pas,*** Please tell me who you are.

Plusieurs fois, les commandes git suggèrent que vous exécutez ne sont pas ce que vous devez exécuter. Cette fois, les commandes suggérées ne sont pas mauvaises:

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

Astuce: Jusqu'à ce que je me familiarise avec git, faire une sauvegarde de mon fichier de projet - avant d'exécuter les commandes git suggérées et d'explorer les choses que je pensais fonctionner - a sauvé mon bacon à plusieurs reprises.


2

Il n'est pas en mesure de détecter automatiquement l'adresse e-mail.

Par défaut, il prend votre nom d'utilisateur système comme abc@xyz.none.

Vous devez donc définir votre e-mail comme ci-dessous:

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

Après avoir défini l'e-mail, vous pouvez exécuter les commandes git et valider vos modifications.

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

1

J'ai rencontré ce message d'erreur en essayant de valider certains fichiers.

Courir simplement git fetchpuis réessayer mon commit a fonctionné pour moi.


0

Pour corriger, j'utilise: git config --global user.email "you@example.com" et fonctionne.

user.mail pas de travail, besoin de mettre un E. Typo peut-être?


Je pense que l'OP veut savoir si c'est vraiment nécessaire pour chaque mise à jour.
tbrk

-5

C'est une faute de frappe. Vous avez accidentellement défini "user.mail" sans " e ". Corrigez-le en définissant "user. E- mail" dans la configuration globale avec

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

Solution trouvée ici

https://stackoverflow.com/a/14662703


3
Où voyez-vous "'user.mail' sans 'e'" sur cette page?
Chad Nouis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.