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="john@doe.com" -m "some fix"
fatal: No existing author found with 'john@doe.com'

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

standard A U Thor <author@example.com> 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?


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.


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 <john@doe.com>" -m "Impersonation is evil." 

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

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

<author@example.com> = 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="john@doe.com <>" -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.


13

Complétez simplement :

git commit --author = "john@doe.com" -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 "vous@example.com" 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"


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

signifie simplement que vous devez spécifier

FirstName MiddleName LastName <email@example.com>

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 <john@doe.com>" -m "some fix"

Comme le disent les documents:

  --author=<author>
       Override the commit author. Specify an explicit author using the standard 
       A U Thor <author@example.com> 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.


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 "you@example.com"
  git config --global user.name "Your Name"

Cela fait:

git -c user.name='A U Thor' -c user.email=author@example.com commit

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@foo.com Confirmez que vous avez correctement défini l'e-mail Git:

$ git config --global user.email

email@foo.com


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 = someemail@gmail.com

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é.


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='username@users.noreply.github.com'

Puis définissez l'auteur

git commit --author="username <username@users.noreply.github.com>"

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


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

 git config --global user.name "your name" 
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.