Гіт: помилка "будь ласка, скажи мені, хто ти"


226

У мене є сервери додатків, які я завантажую разом, використовуючи 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кожного разу, коли я оновлюю сервер додатків? Чи все-таки варто перекрити таку поведінку, щоб не помилитися, коли ім’я та електронна адреса не встановлені?


3
З того, що я зіткнувся ні, але знову ж таки, я не бачу жодної проблеми з додаванням вашого імені та електронної пошти, навіть якщо вони є лише фальшивими іменами та електронними листами.
sean

10
Так, ви повинні встановити їх, якщо "простий" git pullзбирається створити комітку, тому що, наприклад, він зробив об'єднання.
fork0

1
Ви описуєте сценарій одностороннього розгортання. Я б не додав облікові дані, щоб уникнути будь-яких комісій з автоматизованої обробки. Так, ви побачите проблему з цією помилкою, але це означає, що хтось обдирає виробництво та змінює файли вручну, викликаючи злиття.
Олексій Скрипник

Відповіді:


249

Я витрачаю на це багато годин, коли я закликаю php-скрипт до init та вчинення git. І я знайшов, що робочий потік повинен бути:

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, конфігурація взагалі не працюватиме.

Побажайте, це допоможе.


Це правильна практика запускати сховище git. Але для оновлення рішення repo @gfxmonk краще
Davisein

Чи можете ви пояснити, як це працює і чому він помилявся перед цим?
Chinmaya B

1
Ви можете додати --globalперемикач до git configкоманд і зробити це один раз для вашого облікового запису ОС. Після цього кроки 2-3 не потрібні.
x-yuri

50

Замість того, щоб робити git pull, ви можете:

git fetch
git reset --hard origin/master

Жоден із них не вимагає, щоб ви налаштували своє ім’я користувача / електронну пошту git.

Це знищить будь-які невідомі локальні зміни / зобов’язання, а ваш HEAD вкаже на коміт (а не на гілку). Але жодне з них не повинно бути проблемою для сервера додатків, оскільки ви не повинні вносити місцеві зміни або брати участь у цьому сховищі.


Автоматизація тягнення кишок в цій ситуації небезпечна, краще зробити скидання.
Девісей

Не було б краще використовувати git fetch && git reset --hard HEAD?
jacoor

@jacoor nope: git reset --hard HEADпросто викидає ваші невмілі зміни, це не змінює те, на чому засновано ваше робоче поле (оскільки за визначенням ви вже в HEAD)
gfxmonk

33

Якщо ви використовуєте sourcetree: Репозиторій -> Налаштування репозиторію -> Додатково -> зніміть прапорець "Використовувати глобальні налаштування користувача"

добре працював для мене.


у моєму випадку мені довелося це перевірити, але все одно! Дякуємо за допомогу
Karoly

32

це працює для мене, спробуйте це .. вам потрібно налаштувати свій термінал з віддаленим доступом.

     git config --global user.name "abc"
     git config --global user.email "abc@example.com"

10

Оновіть процес завантаження, щоб створити ${HOME}/.gitconfigвідповідний вміст або скопіювати наявний звідкись.


9
git config user.email "insert github email here"
git config user.name "insert github real name here"

Це спрацювало для мене чудово.


4

Та сама проблема була зі мною, і я її вирішив, додавши ім'я за замовчуванням та налаштування сховища електронної пошти.

Як запропонував Дорон -

Якщо ви використовуєте sourcetree: Репозиторій -> Налаштування репозиторію -> Додатково -> зніміть прапорець "Використовувати глобальні налаштування користувача".

Додати ім'я та електронну адресу за замовчуванням.


4

У моєму випадку я пропустив слово "e" на слово "email", як Чад заявив вище, але я бачу, що це не так у вас. Будь ласка, натисніть наступну команду, щоб побачити, чи все тягнеться, як очікувалося.

git config -l

4

Ви повинні написати свій електронний лист таким чином

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

Потім: Напишіть Ім'я користувача

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

Після цього з'явиться вікно Poupup

Пишіть USERNAME та EMAIL. На суму, яку Ви хочете внести


3

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


2

Мені справді потрібно встановити це для того, щоб робити простий майстер походження git pull кожного разу, коли я оновлюю сервер додатків? Чи все-таки варто перекрити таку поведінку, щоб не помилитися, коли ім’я та електронна адреса не встановлені?

Він запитає лише один раз і переконається, що відкритий ключ rsa для цієї машини буде доданий до вашого облікового запису github, до якого ви намагаєтесь здійснити або передавати запит на виклик.

Більше інформації про це можна знайти тут


1
Посилання розірвано
Аліса Шварце

2

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

Виконання git statusідентифікованого файлу конфліктуючих. Сортування це вирішило проблему.

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

Цього разу, встановивши це $ HOME та $ USER env vars, це було виправлено (вони за замовчуванням не встановлені в процесі CGI)


2

Погляньте на конфігураційний файл.

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

Перевірте, чи [user]існує розділ. Якщо розділу користувача немає, додайте його.

Приклад:

[user]
name = "your name"
email = "your email"

2

я використовую heroku cli 1. повинен використовувати все ім’я користувача та електронну пошту користувача

$ git config - електронна пошта user.email .login.

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

  1. git pull [git url]
  2. git init
  3. git add *

    5 git commit -m "after config user.name, email email"

  4. git push heroku master


2

Я використовую Дженкінса і зіткнувся з цією проблемою, коли намагався виконати реліз (який вимагає виконання git). Щоб вирішити проблеми, мені потрібно було додати ім'я користувача / адресу електронної пошти (див. Малюнок). Спеціальне ім’я користувача / електронна адресаЦе забезпечило те, що під час перевірки коду він використовував моє ім’я користувача / адресу електронної пошти при виконанні релізу. Зауважте, ця конфігурація доступна з конфігурації проекту Jenkins Multibranch Pipeline.


2

git pullцього не потрібно вимагати. Однак якщо тяга викликає конфлікт злиття, то це здається несекретним.


2

IMHO, правильним способом усунення цієї помилки є налаштування глобального файлу конфігурації 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 repo, з яким ви працюєте на локальному рівні.

Налаштування 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 та вивчити речі, які, на мою думку, спрацюють, - врятував мій бекон не раз.


2

Він не може автоматично виявити електронну адресу.

За замовчуванням він приймає ім’я користувача вашої системи, як abc@xyz.none.

Тому вам потрібно встановити електронну пошту, як показано нижче:

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

Після налаштування електронної пошти ви можете запустити команди git та здійснити зміни.

  1. git init
  2. git add *
  3. git commit -m "деякі init msg"

1

Я наткнувся на це повідомлення про помилку, намагаючись ввести деякі файли.

Просто біг, git fetchа потім спробу мого вчинення знову працював на мене.


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 "?
Чад Нуїс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.