GIT commit en tant qu'utilisateur différent sans e-mail / ou uniquement e-mail

127

J'essaie de valider certaines modifications en tant qu'utilisateur différent, mais je n'ai pas d'adresse e-mail valide, la commande suivante ne fonctionne pas pour moi:

git commit --author="john doe" -m "some fix"
fatal: No existing author found with 'john doe'

J'ai le même problème en essayant de m'engager avec seulement une adresse e-mail

git commit --author="[email protected]" -m "some fix"
fatal: No existing author found with '[email protected]'

Sur les pages de manuel GIT pour la commande commit, il est dit que je peux utiliser le

standard A U Thor <[email protected]> format

Pour l'option --author.

Où ce format est-il défini? que signifient A et U? comment m'engager pour un utilisateur différent avec seulement un nom d'utilisateur ou seulement un email?

Willem D'Haeseleer
la source
3
AU ne représente rien, c'est juste un exemple: AU Thor => AUThor => Auteur . Vous pouvez spécifier tout ce que vous voulez comme nom.
Samy Dindane
1
Je sais que AU Thor forme Auteur, je me demandais s'il y avait une signification dans la séparation.
Willem D'Haeseleer

Réponses:

142

Le format d'auteur minimal requis, comme indiqué dans cette réponse SO , est

Name <email>

Dans votre cas, cela signifie que vous souhaitez écrire

git commit --author="Name <email>" -m "whatever"

Selon le commentaire de Willem D'Haeseleer, si vous n'avez pas d'adresse e-mail, vous pouvez utiliser <>:

git commit --author="Name <>" -m "whatever"

Comme écrit sur la git commitpage de manuel à laquelle vous avez lié, si vous fournissez quelque chose de moins que cela, il est utilisé comme jeton de recherche pour rechercher dans les commits précédents, à la recherche d'autres commits de cet auteur.

Eykanal
la source
28
Je viens de découvrir que si vous n'avez pas d'adresse e-mail, vous pouvez également taper simplement "nom <>", pour le laisser explicitement vide au lieu d'entrer faux.
Willem D'Haeseleer
2
Si vous utilisez "name <>", et git commit --amendaprès, il échouera avec une invalid identerreur; so just don't
sanmai
7
Apparemment, même lorsque vous utilisez cette option, vous devez toujours avoir défini user.email et user.name dans votre configuration git, sinon git se plaint.
qwertzguy
Comment ajouter un fichier en tant qu'utilisateur différent pour mon premier commit? J'utiliserai la commande commit après cela.
MasterJoe
51

Le format spécifique est:

git commit --author="John Doe <[email protected]>" -m "Impersonation is evil." 
pmr
la source
1
Pourquoi ne nécessite-t-il pas le mot de passe de John Doe si vous vous engagez pour son nom?
Narek
3
@Narek Que serait-ce dans ce contexte?
pmr
37

le

format standard AU Thor <[email protected]>

Semble être défini comme suit: (pour autant que je sache, sans aucune garantie)

AU Thor = nom d'utilisateur requis

  • La séparation des personnages probablement indique que les espaces sont autorisés, cela pourrait aussi ressembler à des initiales.
  • Le nom d'utilisateur doit être suivi d'un espace, les espaces supplémentaires seront tronqués

<[email protected]> = adresse e-mail facultative

  • Doit toujours être entre les signes <>.
  • Le format de l'adresse e-mail n'est pas validé, vous pouvez à peu près saisir ce que vous voulez
  • Facultatif, vous pouvez l'omettre explicitement en utilisant <>

Si vous n'utilisez pas cette syntaxe exacte, git recherchera dans les commits existants et utilisera le premier commit qui contient votre chaîne fournie.

Exemples:

  1. Seul le nom d'utilisateur

    Omettez l'adresse e-mail explicitement:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Uniquement e-mail

    Techniquement, ce n'est pas possible. Vous pouvez cependant saisir l'adresse e-mail comme nom d'utilisateur et omettre explicitement l'adresse e-mail. Cela ne semble pas très utile. Je pense qu'il serait encore plus logique d'extraire le nom d'utilisateur de l'adresse e-mail, puis de l'utiliser comme nom d'utilisateur. Mais si vous devez:

    git commit --author="[email protected] <>" -m "Impersonation is evil." 
    

Je suis tombé dessus en essayant de convertir un référentiel de mercurial en git. J'ai testé les commandes sur msysgit 1.7.10.

Willem D'Haeseleer
la source
13

Complétez simplement :

git commit --author = "[email protected]" -m "L'emprunt d'identité est un mal."

Dans certains cas, la validation échoue toujours et affiche le message suivant:

*** S'il vous plaît dites-moi qui vous êtes.

Courir

git config --global user.email "[email protected]" git config --global user.name "Votre nom"

pour définir l'identité par défaut de votre compte. Omettez --global pour définir l'identité uniquement dans ce référentiel.

fatal: impossible de détecter automatiquement l'adresse e-mail (obtenu xxxx)

Alors lancez simplement "git config", puis "git commit"

qinxian
la source
C'est ce dont j'avais besoin. J'ai un nom d'utilisateur et une adresse e-mail séparés pour un GitHub d'entreprise et le GitHub public. J'avais besoin de configurer mon dépôt actuel pour utiliser mon nom d'utilisateur et mon e-mail GitHub publics afin de pouvoir appliquer mes modifications sans exposer un e-mail privé.
TBirkulosis
8

Format

A U Thor <[email protected]>

signifie simplement que vous devez spécifier

FirstName MiddleName LastName <[email protected]>

On dirait que les prénoms et les prénoms sont facultatifs (peut-être que la partie avant l'email n'a pas du tout un format strict). Essayez, par exemple, ceci:

git commit --author="John <[email protected]>" -m "some fix"

Comme le disent les documents:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <[email protected]> format. Otherwise <author> is assumed to 
       be a pattern and is used to search for an existing commit by that author 
       (i.e. rev-list --all -i --author=<author>); the commit author is then copied 
       from the first such commit found.

si vous n'utilisez pas ce format, git traite la chaîne fournie comme un modèle et essaie de trouver le nom correspondant parmi les auteurs des autres commits.

KL-7
la source
Il n'y a rien de tel que FirstName MiddleName LastName . Regarde ça .
Samy Dindane
3

L' --authoroption ne fonctionne pas:

*** Please tell me who you are.

Run

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

Cela fait:

git -c user.name='A U Thor' -c [email protected] commit
user2394284
la source
C'est le seul qui a fonctionné pour moi. Notez que l'ordre est important. git commit -c user.name="j bloggs" -am "message"donne une erreurfatal: Option -m cannot be combined with -c/-C/-F
Martin
2

Ouvrez Git Bash.

Définissez un nom d'utilisateur Git:

$ git config --global user.name "name family" Confirmez que vous avez correctement défini le nom d'utilisateur Git:

$ git config - global user.name

nom famille

Définissez un e-mail Git:

$ git config --global user.email [email protected] Confirmez que vous avez correctement défini l'e-mail Git:

$ git config --global user.email

[email protected]

Un Mo
la source
0

Tout dépend de la façon dont vous vous engagez.

Par exemple:

git commit -am "Some message"

utilisera votre ~\.gitconfignom d'utilisateur. En d'autres termes, si vous ouvrez ce fichier, vous devriez voir une ligne qui ressemble à ceci:

[user]
    email = [email protected]

Ce serait l'e-mail que vous souhaitez modifier. Si vous faites une demande d'extraction via Bitbucket ou Github, etc., vous seriez celui avec lequel vous êtes connecté.

Canyon de Kolob
la source
0

Une alternative si le souci est de masquer la véritable adresse e-mail ... Si vous vous engagez sur Github, vous n'avez pas besoin d'un véritable e-mail que vous pouvez utiliser<username>@users.noreply.github.com

Que vous utilisiez ou non Github, vous souhaiterez probablement d'abord modifier les détails de votre committer (sur l'utilisation de Windows SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='[email protected]'

Puis définissez l'auteur

git commit --author="username <[email protected]>"

https://help.github.com/articles/keeping-your-email-address-private

KCD
la source
Contrairement à toutes les autres solutions, cela fonctionne lorsque vous n'avez pas initialisé user.email/user.name au départ.
Andy le
-2

Exécutez ces deux commandes à partir du terminal pour définir l'adresse e-mail et le nom de l'utilisateur

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

 git config --global user.name "your name" 
Diptendu Das
la source