GIT фиксирует как другой пользователь без электронной почты/или только электронной почты

Я пытаюсь зафиксировать некоторые изменения от имени другого пользователя, но у меня нет действующего адреса электронной почты, у меня не работает следующая команда:

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

У меня та же проблема при попытке зафиксировать только с адресом электронной почты

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

На страницах руководства GIT для команды commit написано, что я могу использовать

standard A U Thor <[email protected]> format

Для опции --author.

Где определяется этот формат? что обозначают A и U? Как я могу зафиксировать для другого пользователя только с именем пользователя или только по электронной почте?

Ответ 1

стандарт A U Thor < [email protected] > Формат

Кажется, что определено следующим образом: (насколько я знаю, без каких-либо гарантий)

A U Thor = обязательное имя пользователя

  • Разделение символов, вероятно, указывает на то, что пробелы разрешены, он также может напоминать инициалы.
  • За именем пользователя должно быть 1 пробел, дополнительные пробелы будут усечены

< [email protected] >= дополнительный адрес электронной почты

  • Всегда должно находиться между < > знаки.
  • Формат адреса электронной почты не проверен, вы можете в значительной степени ввести все, что хотите.
  • Необязательно, вы можете опустить это явно, используя < >

Если вы не используете этот точный синтаксис, git будет выполнять поиск по существующим коммитам и использовать первый коммит, содержащий вашу предоставленную строку.

<сильные > Примеры:

  • Только имя пользователя

    Оповести адрес электронной почты явно:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  • Только электронная почта

    Технически это невозможно. Однако вы можете ввести адрес электронной почты в качестве имени пользователя и явно опустить адрес электронной почты. Это не похоже, что это очень полезно. Я думаю, что было бы еще более полезно извлечь имя пользователя из адреса электронной почты, а затем использовать его как имя пользователя. Но если вам нужно:

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

Я столкнулся с этим при попытке конвертировать репозиторий из меркуриала в git. Я проверил команды на msysgit 1.7.10.

Ответ 2

Минимальный требуемый формат автора, как указано в этом SO-ответе,

Name <email>

В вашем случае это означает, что вы хотите написать

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

Комментарий от пользователя Per Willem D'Haeseleer, если у вас нет адреса электронной почты, вы можете использовать <>:

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

Как написано на git commit странице man, с которой вы связались, если вы поставляете что-то меньшее, то оно используется как токен поиска для поиска предыдущих коммитов, ища другие коммиты этого автора.

Ответ 3

Конкретный формат:

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

Ответ 4

Просто добавьте:

git commit --author = "[email protected]" -m "Олицетворение - это зло".

В некоторых случаях коммит все еще не работает и отображает следующее сообщение:

*** Скажите, пожалуйста, кто вы.

Run

git config --global user.email "[email protected]"  git config --global user.name "Ваше имя"

чтобы установить идентификатор вашей учетной записи по умолчанию. Omit --global, чтобы установить идентификатор только в этом репозитории.

фатальный: не удается автоматически обнаружить адрес электронной почты (полученный xxxx)

Итак, просто запустите "git config", затем "git commit"

Ответ 5

Формат

A U Thor <[email protected]>

просто означает, что вы должны указать

FirstName MiddleName LastName <[email protected]>

Похоже, что фамилия и фамилия не являются обязательными (возможно, часть перед письмом не имеет строгого формата). Попробуйте, например, следующее:

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

Как говорится в документах:

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

если вы не используете этот формат, git рассматривает предоставленную строку как шаблон и пытается найти совпадающее имя среди авторов других коммитов.

Ответ 6

Откройте Git Bash.

Установите имя пользователя Git:

$ git config --global user.name "name family" Подтвердите, что вы правильно установили имя пользователя Git:

$ git config --global user.name

имя семьи

Установите адрес электронной почты Git:

$ git config --global user.email [email protected] Убедитесь, что вы правильно установили адрес электронной почты Git:

$ git config --global user.email

[email protected]

Ответ 7

Запустите эти две команды из терминала, чтобы установить электронную почту и имя пользователя

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

 git config --global user.name "your name" 

Ответ 8

Если вы совершаете Github, вам не нужен настоящий адрес электронной почты, вы можете использовать <username>@users.noreply.github.com

Независимо от использования Github или нет, вы, вероятно, сначала захотите изменить свои данные коммиттер (при использовании Windows SET GIT_...)

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

Затем установите автора

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

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