Git: «пожалуйста, скажи мне кто ты» ошибка

227

У меня есть серверы приложений, которые я загружаю вместе, используя Chef + некоторые специальные сценарии bash. Проблема в том, что когда я хочу запустить обновление на одном из этих серверов приложений, я получаю:

19:00:28: *** Please tell me who you are.

Run

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

Действительно ли мне нужно настроить это на простое git pull origin masterкаждый раз, когда я обновляю сервер приложений? Есть ли способ переопределить это поведение, чтобы оно не выдавало ошибку, если имя и адрес электронной почты не установлены?

randombits
источник
3
Из того, с чем я столкнулся, нет, но опять же я не вижу проблем с простым добавлением вашего имени и адреса электронной почты, даже если это просто поддельные имена и электронные письма.
Шон
10
Да, вы должны установить их, если «простой» git pullсобирается создать коммит, потому что он сделал слияние, например.
fork0
1
Вы описываете сценарий одностороннего развертывания. Я бы не стал добавлять учетные данные, чтобы избежать каких-либо автоматических коммитов. Да, вы увидите проблему с этой ошибкой, но это будет означать, что кто-то ковыряется в производстве и изменяет файлы, вручную вызывая слияние.
Алексей Скрипник,

Ответы:

249

Я трачу на это много часов, когда я вызываю php-скрипт для инициализации и принятия мерзавца. И я обнаружил, что рабочий процесс должен быть:

1.git init
2.git config user.name "someone"
3.git config user.email "someone@someplace.com"
4.git add *
5.git commit -m "some init msg"

Если вы поменяете местами [23] и 1, конфигурация не будет работать вообще.

Жаль, что это поможет.

luxuia
источник
Это правильная практика для запуска git-репозитория. Но для обновления репозитория @gfxmonk лучше решение
Davisein
Можете ли вы объяснить, как это работает и почему выдает ошибку, прежде чем сделать это?
Чинмайя Б
1
Вы можете добавить --globalпереключатель к git configкомандам и сделать это один раз для своей учетной записи ОС. После этого шаги 2-3 не нужны.
x-yuri
50

Вместо этого git pullвы можете сделать:

git fetch
git reset --hard origin/master

Ни один из них не требует настройки вашего имени пользователя / адреса электронной почты git.

Это уничтожит любые незафиксированные локальные изменения / коммиты и оставит ваш HEAD, указывающий на коммит (не ветвь). Но ни один из них не должен быть проблемой для сервера приложений, поскольку вы не должны вносить локальные изменения или фиксировать этот репозиторий.

gfxmonk
источник
Автопутешествие по git pull в этой ситуации опасно, лучше сделать сброс.
Дависейн
Не лучше ли использовать git fetch && git reset --hard HEAD?
Жакур
@jacoor Нет: git reset --hard HEADпросто отбрасывает ваши несвязанные изменения, это не меняет того, на чем основан ваш коммит (поскольку по определению вы уже находитесь в HEAD)
gfxmonk
33

Если вы используете sourcetree: Репозиторий -> Настройки репозитория -> Дополнительно -> снимите флажок «Использовать глобальные настройки пользователя»

отлично работал для меня.

DoronK
источник
в моем случае я должен был проверить это, но в любом случае! Спасибо за помощь
Кароли
32

это работает для меня, попробуйте это .. вам нужно настроить свой терминал с удаленным доступом.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"
Кулдип Сингх
источник
10

Обновите процесс начальной загрузки, чтобы создать ${HOME}/.gitconfigсоответствующий контент или скопировать уже существующий.

twalberg
источник
9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Это отлично сработало для меня.

MrRobot4.0
источник
4

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

Как предположил Дорон,

Если вы используете sourcetree: Репозиторий -> Настройки репозитория -> Дополнительно -> снимите флажок «Использовать глобальные настройки пользователя».

Добавьте имя по умолчанию и адрес электронной почты.

Рахул
источник
4

В моем случае мне не хватало «е» в слове «электронная почта», как сказал Чад выше, но я вижу, что это не так с вами. Пожалуйста, нажмите следующую команду, чтобы увидеть, все ли тянет, как ожидалось.

git config -l
Мо-Ган
источник
4

Вы должны написать свой адрес электронной почты, как это

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

Затем: напишите имя пользователя

 git config --global user.name "Your Name"

После этого появится окно Poupup

Напишите ИМЯ ПОЛЬЗОВАТЕЛЯ И ЭЛЕКТРОНУ

Абу Бакр
источник
3

Для меня проблема заключалась в сетевом подключении, после того как я снова подключился к своему Wi-Fi, он мог получить данные и зафиксировать без каких-либо проблем.

Шарух Мастан
источник
2

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

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

Более подробную информацию об этом можно найти здесь

Мансаб Уппал
источник
1
Ссылка не работает
Алиса Шварц
2

У меня было это как сообщение об ошибке:
git pullнормально работала строка cmd,
git pullне удалась в процессе Perl CGI (webhook для автоматического развертывания из github) с вышеуказанной ошибкой.

Делаем git statusвыявленный конфликтующий файл. Сортировка исправила проблему.

Проблема возникла позже, когда я изменил некоторые настройки конфигурации.

На этот раз установка переменных $ HOME и $ USER env исправила это (по умолчанию не устанавливается в процессе CGI)

Эндрю Мерфи
источник
2

Посмотрите на файл конфигурации.

Репозиторий> Настройки репозитория> Редактировать файл конфигурации.

Проверьте, существует ли [user]раздел. Если пользовательский раздел отсутствует, добавьте его.

Пример:

[user]
name = "your name"
email = "your email"
Аман Шривастава
источник
2

я использую heroku cli 1. должен использовать все имя пользователя и адрес электронной почты пользователя

$ git config --global user.email .login email.

$ git config --global user.name .heroku name.

  1. git pull [git url]
  2. мерзавец
  3. мерзавец добавить *

    5 git commit -m "после конфигурации user.name, email пользователя"

  4. гит пуш герой мастер

linepro
источник
2

Я использовал Jenkins и столкнулся с этой проблемой при попытке выполнить релиз (который требует git commit). Чтобы устранить проблемы, мне нужно было добавить пользовательское имя пользователя / адрес электронной почты (см. Рисунок). Пользовательское имя пользователя / адрес электронной почтыЭто гарантировало, что при извлечении кода использовались имя / адрес электронной почты моего пользователя сборки при выполнении выпуска. Обратите внимание, что эта конфигурация доступна из конфигурации проекта Jenkins Multibranch Pipeline.

Craig
источник
2

git pullне должен этого требовать. Однако, если вытягивание вызывает конфликт слияния, то оно кажется необязательным.

Кьельд Фларуп
источник
2

ИМХО, правильный способ устранить эту ошибку - настроить глобальный файл конфигурации git.

Для этого выполните следующую команду: git config --global -e

Появится редактор, куда вы сможете вставить свои стандартные настройки git.

Вот несколько из них:

[user]
    name = your_username
    email = your_username@users.noreply.github.com 
[alias]
    # BASIC
    st = status
    ci = commit
    br = branch
    co = checkout
    df = diff

Для получения дополнительной информации см. Настройка Git - Конфигурация Git

Когда вы видите команду, как, git config...

$ git config --global core.whitespace \
    trailing-space,space-before-tab,indent-with-non-tab

... вы можете поместить это в свой глобальный конфигурационный файл git как:

[core]
   whitespace = space-before-tab,-indent-with-non-tab,trailing-space

Для одноразовых конфигураций вы можете использовать что-то вроде git config --global user.name 'your_username'

Если вы не устанавливаете свои конфигурации git глобально, вам придется делать это для каждого репозитория git, с которым вы работаете локально.

Настройки user.name и user.email сообщают git, кто вы, поэтому последующие git commitкоманды не будут жаловаться,*** Please tell me who you are.

Много раз, команды git предполагают, что вы выполняете не то, что вы должны запускать. На этот раз предлагаемые команды неплохие:

$ git commit -m 'first commit'

*** Please tell me who you are.

Run

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

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

L3x
источник
2

Невозможно автоматически определить адрес электронной почты.

По умолчанию это принимает ваше имя пользователя системы, как abc@xyz.none.

Таким образом, вам нужно настроить адрес электронной почты, как показано ниже:

git config user.email "someone@gmail.com"

После настройки электронной почты вы можете запустить команды git и зафиксировать ваши изменения.

  1. мерзавец
  2. мерзавец добавить *
  3. git commit -m "некоторая инициализация msg"
АМИТ САМОТА
источник
1

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

Просто запуск, git fetchзатем попытка моего коммита снова сработал для меня.

bergie3000
источник
0

Для исправления я использую: git config --global user.email "you@example.com" и работает.

user.mail нет работы, нужно поставить E. Typo возможно?

Виктор Гюго Ногейра д Волк
источник
Я думаю, что ОП хочет знать, действительно ли это необходимо для каждого обновления.
tbrk
-5

Это опечатка. Вы случайно установили «user.mail» без « e ». Исправьте это, установив «user. E mail» в глобальной конфигурации с помощью

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

Нашел решение здесь

https://stackoverflow.com/a/14662703

Гириш Джоши
источник
3
Где вы видите "'user.mail' без 'e'" на этой странице?
Чад Нуис