142 votes

GIT commit comme utilisateur différent sans email / ou seulement email

J'essaie de valider des 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 lorsque j'essaie 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'

Dans les pages du manuel GIT concernant la commande commit, il est indiqué que je peux utiliser la commande

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 puis-je m'engager pour un utilisateur différent avec seulement un nom d'utilisateur ou seulement un email ?

3 votes

A U ne signifie rien, c'est juste un exemple : A U Thor \=> AUThor \=> Auteur . Vous pouvez spécifier tout ce que vous voulez comme nom.

1 votes

Je sais que A U Thor forme l'auteur, je me demandais s'il y avait une signification à cette séparation.

166voto

eykanal Points 8133

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

Name <email>

Dans votre cas, cela signifie que vous voulez é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 indiqué sur le git commit page de manuel dont vous avez fait le lien, si vous fournissez quelque chose de moins que cela, il est utilisé comme un jeton de recherche pour rechercher dans les commits précédents, à la recherche d'autres commits de cet auteur.

29 votes

Je viens de découvrir que si vous n'avez pas d'adresse électronique, vous pouvez aussi simplement taper "nom <>", pour laisser explicitement la case vide au lieu d'entrer un faux nom.

3 votes

Si vous utilisez "name <>" y git commit --amend après, il échouera avec invalid ident l'erreur ; il suffit donc de ne pas

7 votes

Apparemment, même en utilisant cette option, vous devez toujours avoir défini user.email et user.name dans votre configuration git, sinon git se plaint.

62voto

pmr Points 30450

Le format spécifique est le suivant :

git commit --author="John Doe <john@doe.com>" -m "Impersonation is evil."

1 votes

Pourquoi ne demande-t-on pas le mot de passe de John Doe si on demande son nom ?

3 votes

@Narek Qu'est-ce que ce serait dans ce contexte ?

42voto

Willem D'haeseleer Points 6283

El

standard A U Thor author@example.com format

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

A U Thor = nom d'utilisateur requis

  • La séparation des personnages probablement indique que les espaces sont autorisés, il 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 électronique facultative

  • Doit toujours être entre les signes < >.
  • Le format de l'adresse électronique n'est pas validé, vous pouvez entrer ce que vous voulez.
  • Facultatif, vous pouvez l'omettre explicitement en utilisant <>

Si vous n'utilisez pas cette syntaxe exacte, git cherchera parmi les commits existants et utilisera le premier commit qui contient votre chaîne de caractères.

Exemples :

  1. Seulement le nom d'utilisateur

    Omettez explicitement l'adresse électronique :

    git commit --author="John Doe <>" -m "Impersonation is evil."
  2. Seulement l'email

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

    git commit --author="john@doe.com <>" -m "Impersonation is evil." 

Je me suis heurté à ce problème en essayant de convertir un dépôt de mercurial à git. J'ai testé les commandes sur msysgit 1.7.10.

13voto

qinxian Points 61

Il suffit de compléter

git commit --author="john@doe.com " -m "L'usurpation d'identité est un mal."

Dans certains cas, le commit échoue toujours et vous montre le message suivant :

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

Exécuter

git config --global user.email "you@example.com" git config --global user.name "Your Name" (Votre nom)

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

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

Il suffit donc de lancer "git config", puis "git commit".

0 votes

Voici ce dont j'avais besoin. J'ai un nom d'utilisateur et une adresse e-mail distincts pour le GitHub de l'entreprise et le GitHub public. J'avais besoin de configurer mon repo actuel pour qu'il utilise mon nom d'utilisateur et mon e-mail GitHub public afin de pouvoir pousser mes modifications sans exposer un e-mail privé.

8voto

KL-7 Points 14154

Format

A U Thor <author@example.com>

signifie simplement que vous devez spécifier

FirstName MiddleName LastName <email@example.com>

Il semble que le second prénom et le nom de famille soient facultatifs (peut-être que la partie précédant l'e-mail n'a pas de format strict du tout). Essayez, par exemple, ceci :

git commit --author="John <john@doe.com>" -m "some fix"

Comme le disent les docteurs :

  --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 motif et essaie de trouver le nom correspondant parmi les auteurs des autres commits.

0 votes

Il n'y a rien de tel que Prénom Moyen Nom Nom de famille . Voir este .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X