GIT здійснює різні користувачі без електронної пошти / або лише електронної пошти


127

Я намагаюся здійснити деякі зміни як інший користувач, але у мене немає дійсної адреси електронної пошти, наступна команда не працює для мене:

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

У мене така ж проблема, коли я намагаюся ввести лише одну адресу електронної пошти

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

На сторінках GIT man для команди команд написано, що я можу використовувати

standard A U Thor <author@example.com> format

Для параметра --author.

Де визначений цей формат? що означають A і U? як я можу зробити інший користувач лише користувачем або лише електронною поштою?


3
AU нічого не означає, це лише приклад: AU Thor => AUThor => Author . Ви можете вказати все, що завгодно, як ім'я.
Samy Dindane

1
Я знаю, що AU Тор формує автора, мені було цікаво, чи є якесь значення в розділенні.
Віллем Д'Хассілер

Відповіді:


142

Мінімальний необхідний авторський формат, як натякається у цій відповіді ТА , такий

Name <email>

У вашому випадку це означає, що ви хочете писати

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

За коментарем Willem D'Haeseleer, якщо у вас немає адреси електронної пошти, ви можете використовувати <>:

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

Як написано на сторінці git commitчоловіка, на яку ви пов’язані, якщо ви надаєте щось менше, ніж це, воно використовується як маркер пошуку для пошуку попередніх комітетів, пошуку інших комісій цього автора.


28
Щойно з’ясувавши, що якщо у вас немає адреси електронної пошти, ви також можете просто ввести "name <>", щоб явно залишити це порожнім замість того, щоб вводити помилкове повідомлення.
Віллем Д'Хассілер

2
Якщо ви користуєтесь "name <>"і git commit --amendпісля, це не вдасться з invalid identпомилкою; тому просто не робіть
санмай

7
Мабуть, навіть при використанні цього параметра вам все-таки потрібно встановити user.email та user.name у своєму git config, інакше git скаржиться.
qwertzguy

51

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

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

1
Чому він не вимагає пароля Джона До, якщо ви покладаєте на його ім’я?
Нарек

3
@Narek Що б це було в цьому контексті?
pmr

37

The

стандартний формат AU Thor <author@example.com>

Здається, це визначається так: (наскільки я знаю, з абсолютно ніякими гарантіями)

AU Thor = необхідне ім’я користувача

  • Розмежування символів, ймовірно, вказує на те, що пробіли дозволені, вони також можуть нагадувати ініціали.
  • Ім'я користувача має дотримуватися 1 пробіл, додаткові пробіли будуть усічені

<author@example.com> = необов'язкова адреса електронної пошти

  • Завжди має бути між <> знаками.
  • Формат адреси електронної пошти не підтверджений, ви можете вводити все, що завгодно
  • Необов’язково, ви можете пропустити це явно за допомогою <>

Якщо ви не використовуєте цей точний синтаксис, git здійснить пошук по існуючих комісіях та використає перший комітет, який містить наданий рядок.

Приклади:

  1. Тільки ім'я користувача

    Явно пропустіть електронну адресу:

    git commit --author="John Doe <>" -m "Impersonation is evil."
    
  2. Лише електронною поштою

    Технічно це неможливо. Однак ви можете ввести адресу електронної пошти як ім’я користувача та явно пропустити електронну адресу. Це не здається, що це дуже корисно. Я думаю, було б ще більше сенсу витягти ім’я користувача з адреси електронної пошти, а потім використовувати це як ім’я користувача. Але якщо вам доведеться:

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

Я наткнувся на це, намагаючись перетворити сховище з mercurial в git. Я тестував команди на msysgit 1.7.10.


13

Просто доповнення:

git commit --author = "john@doe.com" -m "Уособлення - це зло".

У деяких випадках комісія все-таки виходить з ладу і показує вам таке повідомлення:

*** Скажіть, будь ласка, хто ви є.

Біжи

git config --global user.email "you@example.com" git config --global user.name "Ваше ім'я"

щоб встановити ідентифікатор вашого облікового запису за замовчуванням. Пропустіть --global, щоб встановити ідентифікацію лише у цьому сховищі.

фатально: не вдається автоматично визначити електронну адресу (отримав xxxx)

Тому просто запустіть "git config", потім "git commit"


Це те, що мені було потрібно. У мене є окреме ім’я користувача та електронна адреса для корпоративного GitHub та загальнодоступного GitHub. Мені потрібно було встановити своє поточне репо, щоб використовувати моє загальнодоступне ім'я користувача та електронну пошту GitHub, щоб я міг змінити свої зміни, не піддаючи приватну електронну пошту.
TBirkulosis

8

Формат

A U Thor <author@example.com>

просто означає, що вам слід вказати

FirstName MiddleName LastName <email@example.com>

Схоже, прізвища середнього та прізвища необов’язкові (можливо, частина перед електронною поштою зовсім не має строгого формату). Спробуйте, наприклад, це:

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

Як кажуть документи:

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

якщо ви не використовуєте цей формат, git розглядає наданий рядок як зразок і намагається знайти відповідне ім’я серед авторів інших комітетів.


Немає такого поняття, як LastName LastName LastName . Дивіться це .
Samy Dindane

3

--authorОпція не працює:

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

Це робить:

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

Це єдиний, хто працював на мене. Зверніть увагу, що порядок важливий. git commit -c user.name="j bloggs" -am "message"дає помилкуfatal: Option -m cannot be combined with -c/-C/-F
Мартін

2

Відкрийте Git Bash.

Встановити ім'я користувача Git:

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

$ git config - глобальне ім'я користувача

назва родини

Встановлення електронної пошти Git:

$ git config --global user.email email@foo.com Підтвердьте, що ви правильно встановили електронну пошту Git:

$ git config --global user.email

email@foo.com


0

Все залежить від того, як ви здійснюєте.

Наприклад:

git commit -am "Some message"

використовуватиме ваше ~\.gitconfigім'я користувача. Іншими словами, якщо ви відкриєте цей файл, ви повинні побачити рядок, який виглядає приблизно так:

[user]
    email = someemail@gmail.com

Це буде електронний лист, який ви хочете змінити. Якщо ви робите запит на витяг через Bitbucket або Github тощо, ви будете тим, ким ви не ввійшли в систему.


0

Альтернатива , якщо турбота , щоб приховати реальну адресу електронної пошти ... Якщо ви робите на Github вам не потрібен реальний електронної пошти , ви можете використовувати<username>@users.noreply.github.com

Незалежно від того, з допомогою Github чи ні, ви , ймовірно , першим хочете змінити комміттер деталі (про використання вікна SET GIT_...)

GIT_COMMITTER_NAME='username' 
GIT_COMMITTER_EMAIL='username@users.noreply.github.com'

Потім встановити автора

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

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


На відміну від усіх інших рішень, це працює, коли ви початково не ініціювали user.email/user.name.
Енді

-2

Запустіть ці дві команди з терміналу, щоб встановити адресу користувача та ім'я користувача

 git config --global user.email "you@example.com" 

 git config --global user.name "your name" 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.