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